| The Gaudi Framework v32r1 (f65d50dc)

Public Member Functions | Private Attributes | List of all members
IgHookTraceAlloc Class Reference

`#include <src/component/IgHook_IgHookTrace.h>`

## Public Member Functions
| IgHookTraceAlloc (void)
void * | allocate (size_t bytes)

## Private Attributes
void * | m_pool
size_t | m_left

## Detailed Description

Definition at line 16 of file IgHook_IgHookTrace.h.

## Constructor & Destructor Documentation

## ◆ IgHookTraceAlloc()

IgHookTraceAlloc::IgHookTraceAlloc | ( | void |  | ) |

Definition at line 99 of file IgHook_IgHookTrace.cpp.

99 : m_pool( 0 ), m_left( 0 ) {}
IgHookTraceAlloc::m_left
size_t m_left
Definition: IgHook_IgHookTrace.h:24
IgHookTraceAlloc::m_pool
void * m_pool
Definition: IgHook_IgHookTrace.h:23

## Member Function Documentation

## ◆ allocate()

void * IgHookTraceAlloc::allocate | ( | size_t | bytes | ) |

Definition at line 101 of file IgHook_IgHookTrace.cpp.

101 {
102 // The reason for the existence of this class is to allocate
103 // memory directly using mmap() so we don't create calls to
104 // malloc() and friends. This is for two reasons: it must be
105 // possible to use this in asynchronous signal handlers, and
106 // calling malloc() in those is a really bad idea; and this is
107 // meant to be used by profiling code and it's nicer to not
108 // allocate memory in ways tracked by the profiler.
109 if ( m_left < bytes ) {
110 size_t psize = getpagesize();
111 size_t hunk = psize * 20;
112 if ( hunk < bytes ) hunk = ( hunk + psize - 1 ) & ~( psize - 1 );
113 void* addr = mmap( 0, hunk, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 );
114 if ( addr == MAP_FAILED ) return 0;
115
116 m_pool = addr;
117 m_left = hunk;
118 }
119
120 void* ptr = m_pool;
121 m_pool = (char*)m_pool + bytes;
122 m_left -= bytes;
123 return ptr;
124 }
IgHookTraceAlloc::m_left
size_t m_left
Definition: IgHook_IgHookTrace.h:24
IgHookTraceAlloc::m_pool
void * m_pool
Definition: IgHook_IgHookTrace.h:23

## Member Data Documentation

## ◆ m_left

size_t IgHookTraceAlloc::m_left
| private

Definition at line 24 of file IgHook_IgHookTrace.h.

## ◆ m_pool

void* IgHookTraceAlloc::m_pool
| private

Definition at line 23 of file IgHook_IgHookTrace.h.

The documentation for this class was generated from the following files:

- GaudiProfiling/src/component/IgHook_IgHookTrace.h
- GaudiProfiling/src/component/IgHook_IgHookTrace.cpp