This commit is contained in:
2026-05-19 11:49:22 +08:00
commit add7af4222
96 changed files with 8635 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
#ifndef INCLUDED_FIXED_RBTREE_POOL_H
#define INCLUDED_FIXED_RBTREE_POOL_H
#ifndef INCLUDED_OS_TYPES_H
#include <os_types.h>
#endif /*INCLUDED_OS_TYPES_H*/
#ifndef INCLUDED_POOL_H
#include <pool.h>
#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*/