| #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 |