#ifndef INCLUDED_FIXED_RBTREE_POOL_H #define INCLUDED_FIXED_RBTREE_POOL_H #ifndef INCLUDED_OS_TYPES_H #include #endif /*INCLUDED_OS_TYPES_H*/ #ifndef INCLUDED_POOL_H #include #endif /*INCLUDED_POOL_H*/ /* ------------------------------------------------------------------------------------------------------------------ */ /* * 1. 只能支持固定数量的 node 节点 * 2. 根据 obj_size 建立不同的对象池,同样大小的对象都通过同一个池进行分配 */ typedef struct fixed_rbtree_pool_block_s{ struct fixed_rbtree_pool_block_s* left; struct fixed_rbtree_pool_block_s* right; struct fixed_rbtree_pool_block_s* parent; char color; pool_t pool; }fixed_rbtree_pool_node_t; typedef struct { fixed_rbtree_pool_node_t* root; pool_t node_pool; }fixed_rbtree_pool_t; /* ------------------------------------------------------------------------------------------------------------------ */ /* */ void fixed_rbtree_pool_init(fixed_rbtree_pool_t* self, void* node_block, os_size_t node_block_size); void fixed_rbtree_pool_add_node_pool(fixed_rbtree_pool_t* self, void* node_block, os_size_t node_block_size); void fixed_rbtree_pool_destroy(fixed_rbtree_pool_t* self); void fixed_rbtree_pool_add(fixed_rbtree_pool_t* self, os_size_t obj_size, void* block, os_size_t block_size); void* fixed_rbtree_pool_alloc(fixed_rbtree_pool_t* self, os_size_t obj_size); void fixed_rbtree_pool_free(fixed_rbtree_pool_t* self, os_size_t obj_size, void* ptr); #endif /*INCLUDED_FIXED_RBTREE_POOL_H*/