blob: 8b57ee78b4169fb83bb06bdfc375b46e2c24468f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# Memory Pool
---
## Object Definitions
```c
#define POOL_HEADER(STRUCT) struct STRUCT *prev, *next; uint32_t obj_size
typedef struct _kpl_pool_obj {
POOL_HEADER(_kpl_pool_obj);
} kpl_pool_obj;
typedef void kpl_pool_on_fn(void *obj);
typedef strut {
_Atomic int32_t allocs;
kpl_pool_obj *root;
kpl_pool_on_fn *on_init, *on_free;
pthread_spinlock_t lock;
} 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
|