import
This commit is contained in:
@@ -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*/
|
||||
Reference in New Issue
Block a user