OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <MemoryPool.h>
Public Member Functions | |
AllocHeader () | |
unsigned int | size () const |
unsigned int | prev_size () const |
bool | is_free () const |
unsigned char * | ptr () const |
AllocHeader * | next_adjacent () |
AllocHeader * | prev_adjacent () |
void | allocate (size_t size) |
void | set_size (size_t size) |
void | set_prev_size (int size) |
void | set_allocated () |
void | join_next () |
Protected Attributes | |
int | alloc_size_ |
Size of my buffer, negative if free, positive if alloc. More... | |
int | prev_size_ |
Size of previous buffer, or 0 if first, never negative. More... | |
Header of all allocations - found at beginning of allocation inside pool. Extra room must be added to each allocation for this header.
Definition at line 24 of file MemoryPool.h.
OpenDDS::DCPS::AllocHeader::AllocHeader | ( | ) |
Construct
Definition at line 35 of file MemoryPool.cpp.
Referenced by OpenDDS::DCPS::FreeHeader::init_free_block(), join_next(), and prev_adjacent().
void OpenDDS::DCPS::AllocHeader::allocate | ( | size_t | size | ) |
Allocate from this block: change size, and mark as allocated
Definition at line 67 of file MemoryPool.cpp.
References set_allocated(), and set_size().
|
inline |
Is this alloc free
Definition at line 34 of file MemoryPool.h.
Referenced by OpenDDS::DCPS::MemoryPool::joinable_next(), OpenDDS::DCPS::MemoryPool::joinable_prev(), OpenDDS::DCPS::FreeHeader::set_free(), and set_size().
void OpenDDS::DCPS::AllocHeader::join_next | ( | ) |
Join with the next adjacent block
Definition at line 82 of file MemoryPool.cpp.
References AllocHeader(), next_adjacent(), set_size(), and size().
Referenced by OpenDDS::DCPS::MemoryPool::join_free_allocs().
AllocHeader * OpenDDS::DCPS::AllocHeader::next_adjacent | ( | ) |
Go to next header
Definition at line 49 of file MemoryPool.cpp.
Referenced by OpenDDS::DCPS::MemoryPool::allocate(), OpenDDS::DCPS::MemoryPool::join_free_allocs(), join_next(), OpenDDS::DCPS::MemoryPool::joinable_next(), and OpenDDS::DCPS::MemoryPool::joinable_prev().
AllocHeader * OpenDDS::DCPS::AllocHeader::prev_adjacent | ( | ) |
Go to prev header
Definition at line 55 of file MemoryPool.cpp.
References AllocHeader(), and prev_size_.
Referenced by OpenDDS::DCPS::MemoryPool::join_free_allocs(), and OpenDDS::DCPS::MemoryPool::joinable_prev().
|
inline |
Get prev alloc size
Definition at line 32 of file MemoryPool.h.
Referenced by OpenDDS::DCPS::MemoryPool::joinable_prev().
unsigned char * OpenDDS::DCPS::AllocHeader::ptr | ( | void | ) | const |
Get pointer to start of my buffer
Definition at line 42 of file MemoryPool.cpp.
Referenced by OpenDDS::DCPS::MemoryPool::allocate(), OpenDDS::DCPS::MemoryPool::joinable_prev(), next_adjacent(), and OpenDDS::DCPS::FreeIndex::node_index().
|
inline |
Mark this block as allocated
Definition at line 53 of file MemoryPool.h.
Referenced by allocate(), and OpenDDS::DCPS::MemoryPool::allocate().
|
inline |
Set the prev size value stored in this header
Definition at line 51 of file MemoryPool.h.
Referenced by OpenDDS::DCPS::MemoryPool::allocate(), and OpenDDS::DCPS::MemoryPool::join_free_allocs().
void OpenDDS::DCPS::AllocHeader::set_size | ( | size_t | size | ) |
Set the size value stored in this header
Definition at line 73 of file MemoryPool.cpp.
References alloc_size_, and is_free().
Referenced by allocate(), OpenDDS::DCPS::MemoryPool::allocate(), and join_next().
|
inline |
Get alloc size
Definition at line 30 of file MemoryPool.h.
Referenced by OpenDDS::DCPS::FreeIndex::add(), OpenDDS::DCPS::MemoryPool::allocate(), OpenDDS::DCPS::FreeIndex::find(), OpenDDS::DCPS::MemoryPool::insert_free_alloc(), OpenDDS::DCPS::MemoryPool::join_free_allocs(), join_next(), OpenDDS::DCPS::MemoryPool::joinable_prev(), OpenDDS::DCPS::MemoryPool::MemoryPool(), next_adjacent(), OpenDDS::DCPS::FreeIndex::node_index(), OpenDDS::DCPS::MemoryPool::pool_alloc(), and OpenDDS::DCPS::FreeIndex::remove().
|
protected |
Size of my buffer, negative if free, positive if alloc.
Sizes are those of buffers, does not include size of headers
Definition at line 60 of file MemoryPool.h.
Referenced by OpenDDS::DCPS::FreeHeader::init_free_block(), OpenDDS::DCPS::FreeHeader::set_free(), and set_size().
|
protected |
Size of previous buffer, or 0 if first, never negative.
Definition at line 61 of file MemoryPool.h.
Referenced by OpenDDS::DCPS::FreeHeader::init_free_block(), and prev_adjacent().