| //===-- memprof_stats.h ----------------------------------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file is a part of MemProfiler, a memory profiler. |
| // |
| // MemProf-private header for statistics. |
| //===----------------------------------------------------------------------===// |
| #ifndef MEMPROF_STATS_H |
| #define MEMPROF_STATS_H |
| |
| #include "memprof_allocator.h" |
| #include "memprof_internal.h" |
| |
| namespace __memprof { |
| |
| // MemprofStats struct is NOT thread-safe. |
| // Each MemprofThread has its own MemprofStats, which are sometimes flushed |
| // to the accumulated MemprofStats. |
| struct MemprofStats { |
| // MemprofStats must be a struct consisting of uptr fields only. |
| // When merging two MemprofStats structs, we treat them as arrays of uptr. |
| uptr mallocs; |
| uptr malloced; |
| uptr malloced_overhead; |
| uptr frees; |
| uptr freed; |
| uptr real_frees; |
| uptr really_freed; |
| uptr reallocs; |
| uptr realloced; |
| uptr mmaps; |
| uptr mmaped; |
| uptr munmaps; |
| uptr munmaped; |
| uptr malloc_large; |
| uptr malloced_by_size[kNumberOfSizeClasses]; |
| |
| // Ctor for global MemprofStats (accumulated stats for dead threads). |
| explicit MemprofStats(LinkerInitialized) {} |
| // Creates empty stats. |
| MemprofStats(); |
| |
| void Print(); // Prints formatted stats to stderr. |
| void Clear(); |
| void MergeFrom(const MemprofStats *stats); |
| }; |
| |
| // Returns stats for GetCurrentThread(), or stats for fake "unknown thread" |
| // if GetCurrentThread() returns 0. |
| MemprofStats &GetCurrentThreadStats(); |
| // Flushes a given stats into accumulated stats of dead threads. |
| void FlushToDeadThreadStats(MemprofStats *stats); |
| |
| } // namespace __memprof |
| |
| #endif // MEMPROF_STATS_H |