Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

#include <lockedpool.h>

+ Inheritance diagram for Arena:

Classes

struct  Stats
 Memory statistics. More...
 

Public Member Functions

 Arena (void *base, size_t size, size_t alignment)
 
virtual ~Arena ()
 
 Arena (const Arena &other)=delete
 
Arenaoperator= (const Arena &)=delete
 
void * alloc (size_t size)
 Allocate size bytes from this arena. More...
 
void free (void *ptr)
 Free a previously allocated chunk of memory. More...
 
Stats stats () const
 Get arena usage statistics. More...
 
bool addressInArena (void *ptr) const
 Return whether a pointer points inside this arena. More...
 

Private Attributes

std::map< char *, size_t > chunks_free
 Map of chunk address to chunk information. More...
 
std::map< char *, size_t > chunks_used
 
char * base
 Base address of arena. More...
 
char * end
 End address of arena. More...
 
size_t alignment
 Minimum chunk alignment. More...
 

Detailed Description

Definition at line 47 of file lockedpool.h.

Constructor & Destructor Documentation

◆ Arena() [1/2]

Arena::Arena ( void *  base,
size_t  size,
size_t  alignment 
)

Definition at line 47 of file lockedpool.cpp.

References base, and chunks_free.

◆ ~Arena()

Arena::~Arena ( )
virtual

Definition at line 54 of file lockedpool.cpp.

◆ Arena() [2/2]

Arena::Arena ( const Arena other)
delete

Member Function Documentation

◆ addressInArena()

bool Arena::addressInArena ( void *  ptr) const
inline

Return whether a pointer points inside this arena.

This returns base <= ptr < (base+size) so only use it for (inclusive) chunk starting addresses.

Definition at line 89 of file lockedpool.h.

References base, and end.

◆ alloc()

void * Arena::alloc ( size_t  size)

Allocate size bytes from this arena.

Returns pointer on success, or 0 if memory is full or the application tried to allocate 0 bytes.

Definition at line 58 of file lockedpool.cpp.

References align_up(), alignment, chunks_free, and chunks_used.

Referenced by BenchLockedPool().

◆ free()

void Arena::free ( void *  ptr)

Free a previously allocated chunk of memory.

Freeing the zero pointer has no effect. Raises std::runtime_error in case of error.

Definition at line 89 of file lockedpool.cpp.

References chunks_free, chunks_used, and extend().

Referenced by BenchLockedPool().

◆ operator=()

Arena& Arena::operator= ( const Arena )
delete

◆ stats()

Arena::Stats Arena::stats ( ) const

Get arena usage statistics.

Definition at line 113 of file lockedpool.cpp.

References chunks_free, and chunks_used.

Member Data Documentation

◆ alignment

size_t Arena::alignment
private

Minimum chunk alignment.

Definition at line 101 of file lockedpool.h.

Referenced by alloc().

◆ base

char* Arena::base
private

Base address of arena.

Definition at line 97 of file lockedpool.h.

Referenced by addressInArena(), and Arena().

◆ chunks_free

std::map<char*, size_t> Arena::chunks_free
private

Map of chunk address to chunk information.

This class makes use of the sorted order to merge previous and next chunks during deallocation.

Definition at line 94 of file lockedpool.h.

Referenced by alloc(), Arena(), free(), and stats().

◆ chunks_used

std::map<char*, size_t> Arena::chunks_used
private

Definition at line 95 of file lockedpool.h.

Referenced by alloc(), free(), and stats().

◆ end

char* Arena::end
private

End address of arena.

Definition at line 99 of file lockedpool.h.

Referenced by addressInArena().


The documentation for this class was generated from the following files:
Released under the MIT license