summaryrefslogtreecommitdiff
path: root/docs/application/memory.md
blob: fbc6b67ac78c31e667320fd999601c8d2b04ddbe (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
# 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;
```