//===-- 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 // //===----------------------------------------------------------------------===// #ifndef SCUDO_STATS_H_ #define SCUDO_STATS_H_ #include "atomic_helpers.h" #include "list.h" #include "mutex.h" #include "thread_annotations.h" #include <string.h> namespace scudo { // Memory allocator statistics enum StatType { … }; StatCounters; // Per-thread stats, live in per-thread cache. We use atomics so that the // numbers themselves are consistent. But we don't use atomic_{add|sub} or a // lock, because those are expensive operations , and we only care for the stats // to be "somewhat" correct: eg. if we call GlobalStats::get while a thread is // LocalStats::add'ing, this is OK, we will still get a meaningful number. class LocalStats { … }; // Global stats, used for aggregation and querying. class GlobalStats : public LocalStats { … }; } // namespace scudo #endif // SCUDO_STATS_H_