#ifndef MEM_POOL_H | |
#define MEM_POOL_H | |
struct mp_block { | |
struct mp_block *next_block; | |
char *next_free; | |
char *end; | |
uintmax_t space[FLEX_ARRAY]; /* more */ | |
}; | |
struct mem_pool { | |
struct mp_block *mp_block; | |
/* | |
* The amount of available memory to grow the pool by. | |
* This size does not include the overhead for the mp_block. | |
*/ | |
size_t block_alloc; | |
/* The total amount of memory allocated by the pool. */ | |
size_t pool_alloc; | |
}; | |
/* | |
* Alloc memory from the mem_pool. | |
*/ | |
void *mem_pool_alloc(struct mem_pool *pool, size_t len); | |
/* | |
* Allocate and zero memory from the memory pool. | |
*/ | |
void *mem_pool_calloc(struct mem_pool *pool, size_t count, size_t size); | |
#endif |