# Memory Pool --- ## Object Definitions ```c #define KPL_SLAB_HEADER(STRUCT) STRCUT *next typdef strcut _kpl_slab_obj { KPL_SLAB_LIST_HEADER(strcut _kpl_slab_obj); } kpl_slab_obj; #define KPL_SLAB_LIST_HEADER(STRCUT) STRCUT *prev, *next typdef strcut _kpl_slab_list_obj { KPL_SLAB_LIST_HEADER(strcut _kpl_slab_list_obj); } kpl_slab_list_obj; #define KPL_SLAB_TREE_HEADER(STRUCT) STRUCT *parent, *left, *right, uint8_t tree_weight typdef strcut _kpl_slab_tree_obj { KPL_SLAB_TREE_HEADER(struct _kpl_slab_tree_obj); } kpl_slab_tree_obj; #define KPL_POOL_HEADER(STRCUT) STRCUT *parent, *left, *right, uint8_t tree_weight, uint64_t obj_size : 56 typdef struct _kpl_pool_obj { KPL_POOL_HEADER(struct _kpl_pool_obj); } kpl_pool_obj; ```