Memory Pool
Create a pool of memory blocks
|
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include <memory.h>
#include "memory_pool.h"
Go to the source code of this file.
Data Structures | |
struct | memory_pool_block_header |
struct | memory_pool |
Macros | |
#define | MEMORY_POOL_HTODB(_header_, _block_size_) ((void *)_header_ - _block_size_) |
#define | MEMORY_POOL_DBTOH(_data_block_, _block_size_) ((memory_pool_block_header_t *)(_data_block_ + _block_size_)) |
#define | NODE_MAGIC 0xBAADA555 |
Typedefs | |
typedef struct memory_pool_block_header | memory_pool_block_header_t |
type alias for global namespace More... | |
Functions | |
memory_pool_t * | memory_pool_init (size_t count, size_t block_size) |
memory pool initializer More... | |
bool | memory_pool_destroy (memory_pool_t *mp) |
void * | memory_pool_acquire (memory_pool_t *mp) |
memory pool pop function More... | |
bool | memory_pool_release (memory_pool_t *mp, void *data) |
memory pool push function More... | |
size_t | memory_pool_available (memory_pool_t *mp) |
memory pool availability function More... | |
void | memory_pool_dump (memory_pool_t *mp) |
memory pool dump function More... | |
Variables | |
bool | DEBUG = false |
#define MEMORY_POOL_DBTOH | ( | _data_block_, | |
_block_size_ | |||
) | ((memory_pool_block_header_t *)(_data_block_ + _block_size_)) |
Definition at line 69 of file memory_pool.c.
#define MEMORY_POOL_HTODB | ( | _header_, | |
_block_size_ | |||
) | ((void *)_header_ - _block_size_) |
Definition at line 64 of file memory_pool.c.
#define NODE_MAGIC 0xBAADA555 |
Definition at line 72 of file memory_pool.c.
typedef struct memory_pool_block_header memory_pool_block_header_t |
type alias for global namespace
void* memory_pool_acquire | ( | memory_pool_t * | mp | ) |
memory pool pop function
mp | a pointer to a memory pool object |
Definition at line 214 of file memory_pool.c.
size_t memory_pool_available | ( | memory_pool_t * | mp | ) |
memory pool availability function
mp | a pointer to a memory pool object |
Definition at line 293 of file memory_pool.c.
bool memory_pool_destroy | ( | memory_pool_t * | mp | ) |
Definition at line 154 of file memory_pool.c.
void memory_pool_dump | ( | memory_pool_t * | mp | ) |
memory pool dump function
mp | a pointer to a memory pool object |
Iterates through all free data blocks in memory pool, printing metadata about each to user.
Definition at line 310 of file memory_pool.c.
memory_pool_t* memory_pool_init | ( | size_t | count, |
size_t | block_size | ||
) |
memory pool initializer
count | number of nodes (headers) in pool |
block_size | size of each data block pointed to by nodes |
Allocates one memory pool struct and count
number of memory pool block and header combinations. Also allocates memory for count
number of pointers in shadow
pointer array.
out of memory
Definition at line 90 of file memory_pool.c.
bool memory_pool_release | ( | memory_pool_t * | mp, |
void * | data | ||
) |
memory pool push function
mp | a pointer to a memory pool object |
data | a pointer to a data block with attached header |
Definition at line 253 of file memory_pool.c.
bool DEBUG = false |
Definition at line 16 of file memory_pool.c.