#include <PoolMalloc.h>

Inheritance diagram for MemPoolMalloc:
Collaboration diagram for MemPoolMalloc:

Public Member Functions

 MemPoolMalloc (char const *label, size_t aSize)
 ~MemPoolMalloc () override
size_t getStats (Mem::PoolStats &) override
bool idleTrigger (int) const override
void clean (time_t) override
void relabel (const char *const aLabel)
void * alloc ()
 provide (and reserve) memory suitable for storing one object More...
void freeOne (void *obj)
 return memory reserved by alloc() More...
int getInUseCount () const
 the difference between the number of alloc() and freeOne() calls More...
void zeroBlocks (const bool doIt)
virtual void setChunkSize (size_t)
 XXX: Misplaced – not all allocators have a notion of a "chunk". See MemPoolChunked. More...
void flushCounters ()

Static Public Member Functions

static size_t RoundedSize (const size_t minSize)

Public Attributes

size_t countAlloc = 0
 the number of calls to Mem::Allocator::alloc() since last flush More...
size_t countSavedAllocs = 0
 the number of malloc()/calloc() calls avoided since last flush More...
size_t countFreeOne = 0
 the number of calls to Mem::Allocator::freeOne() since last flush More...
const char * label
 brief description of objects returned by alloc() More...
const size_t objectSize
 the size (in bytes) of objects managed by this allocator More...
PoolMeter meter
 statistics tracked for this allocator More...

Static Public Attributes

static const size_t FlushLimit = 1000
 Flush counters to 'meter' after flush limit allocations. More...

Protected Member Functions

void * allocate () override
 *alloc() More...
void deallocate (void *) override
 freeOne(void *) More...

Protected Attributes

bool doZero = true

Private Attributes

std::stack< void * > freelist

Detailed Description

Definition at line 36 of file PoolMalloc.h.

Constructor & Destructor Documentation

◆ MemPoolMalloc()

MemPoolMalloc::MemPoolMalloc ( char const *  label,
size_t  aSize 

Definition at line 79 of file PoolMalloc.cc.

◆ ~MemPoolMalloc()

MemPoolMalloc::~MemPoolMalloc ( )

Definition at line 84 of file PoolMalloc.cc.

References assert, clean(), and Mem::Allocator::getInUseCount().

Member Function Documentation

◆ alloc()

◆ allocate()

void * MemPoolMalloc::allocate ( )

◆ clean()

void MemPoolMalloc::clean ( time_t  )

Implements Mem::Allocator.

Definition at line 97 of file PoolMalloc.cc.

References Mem::PoolMeter::alloc, freelist, Mem::PoolMeter::idle, Mem::Allocator::meter, and xfree.

Referenced by ~MemPoolMalloc().

◆ deallocate()

void MemPoolMalloc::deallocate ( void *  )

◆ flushCounters()

◆ freeOne()

◆ getInUseCount()

◆ getStats()

size_t MemPoolMalloc::getStats ( Mem::PoolStats )

fill the given object with statistical data about pool

Number of objects in use, ie. allocated.

Implements Mem::Allocator.

Definition at line 62 of file PoolMalloc.cc.

References Mem::PoolMeter::alloc, Mem::Meter::currentLevel(), Mem::Allocator::getInUseCount(), Mem::PoolMeter::idle, Mem::PoolMeter::inuse, Mem::Allocator::label, Mem::Allocator::meter, Mem::Allocator::objectSize, and Ping::stats.

◆ idleTrigger()

bool MemPoolMalloc::idleTrigger ( int  shift) const

Implements Mem::Allocator.

Definition at line 91 of file PoolMalloc.cc.

References freelist.

◆ relabel()

void Mem::Allocator::relabel ( const char *const  aLabel)

change the allocator description if we were only able to provide an approximate description at object construction time

Definition at line 34 of file Allocator.h.

References Mem::Allocator::label.

◆ RoundedSize()

static size_t Mem::Allocator::RoundedSize ( const size_t  minSize)
minSizeMinimum size needed to be allocated.
Return values
nSmallest size divisible by sizeof(void*)

Definition at line 93 of file Allocator.h.

Referenced by GetStrPool().

◆ setChunkSize()

virtual void Mem::Allocator::setChunkSize ( size_t  )

Reimplemented in MemPoolChunked.

Definition at line 65 of file Allocator.h.

Referenced by Mem::Init().

◆ zeroBlocks()

void Mem::Allocator::zeroBlocks ( const bool  doIt)
See also

Definition at line 62 of file Allocator.h.

References Mem::Allocator::doZero.

Referenced by Mem::AllocatorProxy::getAllocator(), GetStrPool(), and memDataInit().

Member Data Documentation

◆ countAlloc

size_t Mem::Allocator::countAlloc = 0

Definition at line 98 of file Allocator.h.

Referenced by Mem::Allocator::alloc(), and Mem::Allocator::flushCounters().

◆ countFreeOne

size_t Mem::Allocator::countFreeOne = 0

Definition at line 104 of file Allocator.h.

Referenced by Mem::Allocator::flushCounters(), and Mem::Allocator::freeOne().

◆ countSavedAllocs

size_t Mem::Allocator::countSavedAllocs = 0

Definition at line 101 of file Allocator.h.

Referenced by allocate(), Mem::Allocator::flushCounters(), and MemPoolChunked::get().

◆ doZero

bool Mem::Allocator::doZero = true

Whether to zero memory on initial allocation and on return to the pool.

We do this on some pools because many object constructors are/were incomplete and we are afraid some code may use the object after free. When possible, set this to false to avoid zeroing overheads.

Definition at line 130 of file Allocator.h.

Referenced by MemChunk::MemChunk(), allocate(), deallocate(), MemPoolChunked::push(), and Mem::Allocator::zeroBlocks().

◆ FlushLimit

const size_t Mem::Allocator::FlushLimit = 1000

Definition at line 25 of file Allocator.h.

Referenced by Mem::Allocator::alloc().

◆ freelist

std::stack<void *> MemPoolMalloc::freelist

Definition at line 53 of file PoolMalloc.h.

Referenced by allocate(), clean(), deallocate(), and idleTrigger().

◆ label

const char* Mem::Allocator::label

Definition at line 109 of file Allocator.h.

Referenced by MemPoolChunked::getStats(), getStats(), and Mem::Allocator::relabel().

◆ meter

◆ objectSize

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






Web Site Translations