35 lines
		
	
	
		
			677 B
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			677 B
		
	
	
	
		
			C
		
	
	
| #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
 |