summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authornodist <kevin.comas.git@gmail.com>2026-06-22 16:00:30 -0400
committernodist <kevin.comas.git@gmail.com>2026-06-22 16:00:30 -0400
commit00f17d7a204d8add2426cc0b26a2158fd1dc62f6 (patch)
tree3b6ef46cfcd22f3f760d3351b68d0549dcd8a640 /docs
parent3a9cf2508dc7341a6d8ff4b8174064600d704994 (diff)
slab allocted through alloc
Diffstat (limited to 'docs')
-rw-r--r--docs/application/buffer.md4
-rw-r--r--docs/application/group.md2
-rw-r--r--docs/application/interface.md6
-rw-r--r--docs/application/io.md1
-rw-r--r--docs/application/map.md4
-rw-r--r--docs/application/memory.md56
-rw-r--r--docs/application/name.md7
-rw-r--r--docs/application/queue.md4
-rw-r--r--docs/application/type.md8
-rw-r--r--docs/lifecycle/register.md9
10 files changed, 71 insertions, 30 deletions
diff --git a/docs/application/buffer.md b/docs/application/buffer.md
index 881fb27..ea30458 100644
--- a/docs/application/buffer.md
+++ b/docs/application/buffer.md
@@ -6,8 +6,8 @@
```c
typedef struct _kpl_buffer {
- KPL_POOL_HEADER(struct _kpl_buffer);
- uint64_t byte_length;
+ KPL_ALLOC_HEADER(struct _kpl_buffer);
+ size_t byte_length;
kpl_interface *interface;
uint8_t bytes[];
} kpl_buffer;
diff --git a/docs/application/group.md b/docs/application/group.md
index 286f1ee..65566b7 100644
--- a/docs/application/group.md
+++ b/docs/application/group.md
@@ -6,7 +6,7 @@
```c
typedef struct _kpl_group {
- KPL_POOL_HEADER(struct _kpl_group);
+ KPL_ALLOC_HEADER(struct _kpl_group);
kpl_class items[];
} kpl_group;
```
diff --git a/docs/application/interface.md b/docs/application/interface.md
index 8a5dc69..b60da5e 100644
--- a/docs/application/interface.md
+++ b/docs/application/interface.md
@@ -24,13 +24,11 @@ typedef union {
typedef size_t kpl_any_hash_fn(const kpl_any a);
-typedef bool kpl_any_eq_fn(const kpl_any a, const kpl_any b);
-
typedef ssize_t kpl_any_cmp_fn(const kpl_any a, const kpl_any b);
-typedef void kpl_any_free_fn(kpl_any a);
+typedef int32_t kpl_write(const kpl_ant a, FILE *file, int32_t idnt, uint32_t opts);
-// TODO write
+typedef void kpl_any_free_fn(kpl_any a);
typedef struct {
// TODO
diff --git a/docs/application/io.md b/docs/application/io.md
index d97f5d0..9ab786c 100644
--- a/docs/application/io.md
+++ b/docs/application/io.md
@@ -3,4 +3,3 @@
---
All Io is done through linux io uring
-
diff --git a/docs/application/map.md b/docs/application/map.md
index 1bc8b40..01ba57f 100644
--- a/docs/application/map.md
+++ b/docs/application/map.md
@@ -11,8 +11,8 @@ typedef struct _kpl_map_bucket {
} kpl_map_bucket;
typedef struct _kpl_map {
- KPL_POOL_HEADER(strcut _kpl_map);
- uint64_t length;
+ KPL_ALLOC_HEADER(struct _kpl_map);
+ uint32_t used_buckets, available_buckets;
kpl_interface *key_interface, *value_interface;
kpl_map_bucket *head, *tail;
kpl_map_bucket *buckets[];
diff --git a/docs/application/memory.md b/docs/application/memory.md
index fbc6b67..61a59f9 100644
--- a/docs/application/memory.md
+++ b/docs/application/memory.md
@@ -5,10 +5,30 @@
## Object Definitions
```c
-#define KPL_SLAB_HEADER(STRUCT) STRCUT *next
+#define KPL_ALLOC_HEADER(STRCUT) size_t obj_size : 56; int8_t tree_weight; STRCUT *prev
+
+typedef struct _kpl_alloc_obj {
+ KPL_ALLOC_HEADER(_kpl_alloc_obj);
+} kpl_alloc_obj;
+
+#define KPL_ALLOC_TREE_HEADER(STRCUT) KPL_ALLOC_TREE_HEADER(STRUCT); STRUCT *next, *parent
+
+typdef struct _kpl_alloc_tree_obj {
+ KPL_ALLOC_TREE_HEADER(struct _kpl_alloc_tree_obj);
+} kpl_alloc_tree_obj;
+
+#define KPL_ALLOC_POOL_SIZE 56
+
+typedef struct kpl_alloc {
+ _Atomic size_t bytes_allocated;
+ kpl_mutex mutex;
+ kpl_alloc_obj *pool[KPL_ALLOC_POOL_SIZE]
+} kpl_alloc;
+
+#define KPL_SLAB_HEADER(STRUCT) STRCUT *prev
typdef strcut _kpl_slab_obj {
- KPL_SLAB_LIST_HEADER(strcut _kpl_slab_obj);
+ KPL_SLAB_HEADER(strcut _kpl_slab_obj);
} kpl_slab_obj;
#define KPL_SLAB_LIST_HEADER(STRCUT) STRCUT *prev, *next
@@ -17,15 +37,35 @@ 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
+#define KPL_SLAB_TREE_HEADER(STRUCT) STRUCT *prev, *next, *parent; int8_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;
+typedef struct _kpl_slab {
+ KPL_ALLOC_HEADER(struct _kpl_slab);
+ uint32_t obj_size, byte_index;
+ kpl_slab_obj *pool;
+ kpl_mutex mutex;
+ uint8_t byte_array[MAX_SIZE];
+} kpl_slab;
```
+
+# Alloc
+
+All allocated objects size must be aligned to the power of two
+
+## Pooling
+
+Each bucket in the `kpl_alloc.pool` represents two to the power of the bucket index
+
+# AVL Tree For Slab And Alloc
+
+# Slab
+
+Allocated by `kpl_alloc`
+
+## Pooling
+
+Objects for reuse are stored as a list by the `kpl_slab_obj.prev` on `kpl_slab.pool`
diff --git a/docs/application/name.md b/docs/application/name.md
index afc5880..3db91dc 100644
--- a/docs/application/name.md
+++ b/docs/application/name.md
@@ -8,7 +8,12 @@ Each word representing a var, symbol or type gets an `NAME_IDENTIFIER` -> `kpl_n
```c
typedef struct _kpl_name {
- KPL_POOL_HEADER(struct _kpl_name);
+ KPL_ALLOC_TREE_HEADER(struct _kpl_name);
char c_str[];
} kpl_name;
+
+typedef strcut {
+ kpl_name *root;
+ kpl_mutex mutex;
+} kpl_name_tree;
```
diff --git a/docs/application/queue.md b/docs/application/queue.md
index 5e8ae15..2807ce9 100644
--- a/docs/application/queue.md
+++ b/docs/application/queue.md
@@ -11,8 +11,8 @@ typedef struct _kpl_queue_item {
} kpl_queue_item;
typedef struct _kpl_queue {
- KPL_POOL_HEADER(strcut _kpl_queue);
- uint64_t length;
+ KPL_ALLOC_HEADER(struct _kpl_queue);
+ size_t item_length;
kpl_interface *interface;
kpl_pool_any *head, *tail;
} kpl_queue;
diff --git a/docs/application/type.md b/docs/application/type.md
index 5ca4469..c985b35 100644
--- a/docs/application/type.md
+++ b/docs/application/type.md
@@ -10,7 +10,7 @@
#define KPL_TYPE_BLOCKS_SIZE UINT16_MAX
typedef struct {
- uint16_t block_index, array_index;
+ uint16_t slab_index, slab_array_index;
} kpl_type_ptr;
static const kpl_type_ptr kpl_type_ptr_null = { UINT16_MAX, UINT16_MAX };
@@ -39,9 +39,5 @@ typedef struct {
kpl_type_body body;
} kpl_type;
-static size_t type_array_block_index;
-
-static kpl_type *type_array_blocks[KPL_TYPE_BLOCKS_SIZE];
-
-static kpl_type_ptr type_pool_head;
+// TODO slab store for kpl_type_ptr
```
diff --git a/docs/lifecycle/register.md b/docs/lifecycle/register.md
index 7fccb05..3f59469 100644
--- a/docs/lifecycle/register.md
+++ b/docs/lifecycle/register.md
@@ -2,13 +2,16 @@
---
-# Create Namespace
+# Create
## Module
1. Init new module with the filename
2. Add to namespace tree
+3. Load
-## String
+# Load
+
+## Module
-# Load Module
+## String