OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <MemoryPool.h>
Public Member Functions | |
void | init_free_block (unsigned int pool_size) |
void | set_free () |
FreeHeader * | smaller_free (unsigned char *pool_base) const |
FreeHeader * | larger_free (unsigned char *pool_base) const |
void | set_smaller_free (FreeHeader *next, unsigned char *pool_base) |
void | set_larger_free (FreeHeader *prev, unsigned char *pool_base) |
![]() | |
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 () |
Private Attributes | |
size_t | offset_smaller_free_ |
Offset to smaller free block in size order. More... | |
size_t | offset_larger_free_ |
Offset to larger free block in size order. More... | |
Additional Inherited Members | |
![]() | |
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 free allocations - found at beginning of allocation inside pool. This forces a minimum allocation size, so that, when freed, header can be cast to this type.
Definition at line 67 of file MemoryPool.h.
void OpenDDS::DCPS::FreeHeader::init_free_block | ( | unsigned int | pool_size | ) |
Initialize the first AllocHeader with its size
Definition at line 90 of file MemoryPool.cpp.
References OpenDDS::DCPS::AllocHeader::alloc_size_, OpenDDS::DCPS::AllocHeader::AllocHeader(), and OpenDDS::DCPS::AllocHeader::prev_size_.
Referenced by OpenDDS::DCPS::MemoryPool::MemoryPool().
FreeHeader * OpenDDS::DCPS::FreeHeader::larger_free | ( | unsigned char * | pool_base | ) | const |
Get next equal or larger free block in size order
Definition at line 118 of file MemoryPool.cpp.
Referenced by OpenDDS::DCPS::MemoryPool::joinable_prev(), and OpenDDS::DCPS::MemoryPool::remove_free_alloc().
void OpenDDS::DCPS::FreeHeader::set_free | ( | ) |
Mark as free
Definition at line 98 of file MemoryPool.cpp.
References OpenDDS::DCPS::AllocHeader::alloc_size_, and OpenDDS::DCPS::AllocHeader::is_free().
Referenced by OpenDDS::DCPS::MemoryPool::pool_free().
void OpenDDS::DCPS::FreeHeader::set_larger_free | ( | FreeHeader * | prev, |
unsigned char * | pool_base | ||
) |
Set the next equal or larger free block in size order
Definition at line 138 of file MemoryPool.cpp.
Referenced by OpenDDS::DCPS::MemoryPool::insert_free_alloc(), and OpenDDS::DCPS::MemoryPool::remove_free_alloc().
void OpenDDS::DCPS::FreeHeader::set_smaller_free | ( | FreeHeader * | next, |
unsigned char * | pool_base | ||
) |
Set the next equal or smaller free block in size order
Definition at line 128 of file MemoryPool.cpp.
Referenced by OpenDDS::DCPS::MemoryPool::insert_free_alloc(), and OpenDDS::DCPS::MemoryPool::remove_free_alloc().
FreeHeader * OpenDDS::DCPS::FreeHeader::smaller_free | ( | unsigned char * | pool_base | ) | const |
Get next equal or smaller free block in size order
Definition at line 108 of file MemoryPool.cpp.
Referenced by OpenDDS::DCPS::FreeIndex::find(), OpenDDS::DCPS::MemoryPool::insert_free_alloc(), OpenDDS::DCPS::MemoryPool::joinable_prev(), OpenDDS::DCPS::FreeIndex::node_index(), and OpenDDS::DCPS::MemoryPool::remove_free_alloc().
|
private |
Offset to larger free block in size order.
Definition at line 87 of file MemoryPool.h.
|
private |
Offset to smaller free block in size order.
Definition at line 86 of file MemoryPool.h.