ATLAS Offline Software
MemStatsHooks.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // MemStatsHooks.h
8 // Author: S.Binet<binet@cern.ch>
10 #ifndef PERFMONEVENT_PERFMONMEMSTATSHOOKS_H
11 #define PERFMONEVENT_PERFMONMEMSTATSHOOKS_H 1
12 
14 
15 #include <stddef.h>
16 #include <stdlib.h>
17 #include <atomic>
18 #ifndef __APPLE__
19 #include <malloc.h>
20 #endif
21 
26 // forward declarations
27 
28 namespace PerfMon {
29 
32 struct MemStats
33 {
35  static std::atomic<bool> m_enabled;
36 
38  static unsigned long long m_nbytes ATLAS_THREAD_SAFE;
39 
41  static unsigned long long m_nmallocs ATLAS_THREAD_SAFE;
42 
44  static unsigned long long m_nfrees ATLAS_THREAD_SAFE;
45 
48  static bool enable(const bool flag)
49  {
50  bool old_value = m_enabled;
51  m_enabled = flag;
52  return old_value;
53  }
54 
56  static void installHooks();
57 
59  static void uninstallHooks();
60 
62  static void saveHooks();
63 
65  static bool enabled() { return m_enabled; }
67  static unsigned long long nbytes() { return m_nbytes; }
69  static unsigned long long nmallocs() { return m_nmallocs; }
71  static unsigned long long nfrees() { return m_nfrees; }
72 
74  static void start();
76  static void stop();
77 };
78 
79 } //> namespace PerfMon
80 
81 #endif// PERFMONEVENT_PERFMONMEMSTATSHOOKS_H
PerfMon::MemStats
placeholder for the stats
Definition: MemStatsHooks.h:33
PerfMon::MemStats::ATLAS_THREAD_SAFE
static unsigned long long m_nmallocs ATLAS_THREAD_SAFE
number of times malloc has been called so far
Definition: MemStatsHooks.h:41
PerfMon::MemStats::uninstallHooks
static void uninstallHooks()
uninstall our hooks
Definition: MemStatsHooks.cxx:110
PerfMon::MemStats::saveHooks
static void saveHooks()
save current hooks
Definition: MemStatsHooks.cxx:120
PerfMon
a simple malloc wrapper that keeps track of the amount of memory allocated on the heap.
Definition: CallGraphAuditor.cxx:24
PerfMon::MemStats::nfrees
static unsigned long long nfrees()
return the number of times free has been called so far
Definition: MemStatsHooks.h:71
master.flag
bool flag
Definition: master.py:29
PerfMon::MemStats::enabled
static bool enabled()
return the current flag value
Definition: MemStatsHooks.h:65
PerfMon::MemStats::ATLAS_THREAD_SAFE
static unsigned long long m_nfrees ATLAS_THREAD_SAFE
number of times free has been called so far
Definition: MemStatsHooks.h:44
PerfMon::MemStats::start
static void start()
initialize library
Definition: MemStatsHooks.cxx:70
PerfMon::MemStats::stop
static void stop()
finalize library
Definition: MemStatsHooks.cxx:85
PerfMon::MemStats::enable
static bool enable(const bool flag)
switch to enable or disable the global malloc hooks
Definition: MemStatsHooks.h:48
PerfMon::MemStats::nbytes
static unsigned long long nbytes()
return the number of bytes allocated so far
Definition: MemStatsHooks.h:67
PerfMon::MemStats::m_enabled
static std::atomic< bool > m_enabled
flag disabling or enabling the global malloc hooks
Definition: MemStatsHooks.h:35
checker_macros.h
Define macros for attributes used to control the static checker.
PerfMon::MemStats::nmallocs
static unsigned long long nmallocs()
return the number of times malloc has been called so far
Definition: MemStatsHooks.h:69
PerfMon::MemStats::installHooks
static void installHooks()
install our hooks
Definition: MemStatsHooks.cxx:100
PerfMon::MemStats::ATLAS_THREAD_SAFE
static unsigned long long m_nbytes ATLAS_THREAD_SAFE
number of bytes allocated so far
Definition: MemStatsHooks.h:38