#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 ( )
override

Definition at line 84 of file PoolMalloc.cc.

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

Member Function Documentation

◆ alloc()

◆ allocate()

void * MemPoolMalloc::allocate ( )
overrideprotectedvirtual

◆ clean()

void MemPoolMalloc::clean ( time_t  )
overridevirtual

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 *  )
overrideprotectedvirtual

◆ flushCounters()

◆ freeOne()

◆ getInUseCount()

◆ getStats()

size_t MemPoolMalloc::getStats ( Mem::PoolStats )
overridevirtual

fill the given object with statistical data about pool

Returns
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
overridevirtual

Implements Mem::Allocator.

Definition at line 91 of file PoolMalloc.cc.

References freelist.

◆ relabel()

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

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)
inlinestaticinherited
Parameters
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  )
inlinevirtualinherited

Reimplemented in MemPoolChunked.

Definition at line 65 of file Allocator.h.

Referenced by Mem::Init().

◆ zeroBlocks()

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

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
inherited

Definition at line 98 of file Allocator.h.

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

◆ countFreeOne

size_t Mem::Allocator::countFreeOne = 0
inherited

Definition at line 104 of file Allocator.h.

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

◆ countSavedAllocs

size_t Mem::Allocator::countSavedAllocs = 0
inherited

Definition at line 101 of file Allocator.h.

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

◆ doZero

bool Mem::Allocator::doZero = true
protectedinherited

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
staticinherited

Definition at line 25 of file Allocator.h.

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

◆ freelist

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

Definition at line 53 of file PoolMalloc.h.

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

◆ label

const char* Mem::Allocator::label
inherited

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:

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors