# Memory Pool --- ## Object Definitions ```c #define KPL_POOL_HEADER(STRUCT) struct STRUCT *prev, *next; uint32_t obj_byte_size typedef struct _kpl_pool_obj { KPL_POOL_HEADER(_kpl_pool_obj); } kpl_pool_obj; typedef void kpl_pool_on_fn(void *obj); typedef strut { uint32_t min_obj_size; atomic_size_t alloc_byte_size; kpl_pool_obj *root; kpl_pool_on_fn *on_init, *on_free; pthread_mutex_t root_mutex; } kpl_pool; static kpl_pool_obj *kpl_pool_head; ``` ## Object Size The max size of an object in the pool is 2 \*\* 32 This allows for 4 aligned bytes after the `POOL_HEADER` macro ## List Management ## Tree Management