From e71dd2d9fe1cc3a6d074f9c1894e2c5200cecdb1 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sat, 16 Apr 2022 19:25:05 +0300 Subject: create more general node structure + Allow for easier handling of other subsystems that want to use nodes, mainly tcb and possibly dev_mem --- include/apos/mem_nodes.h | 1 + include/apos/nodes.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 include/apos/nodes.h (limited to 'include/apos') diff --git a/include/apos/mem_nodes.h b/include/apos/mem_nodes.h index 7a3169f..50f280d 100644 --- a/include/apos/mem_nodes.h +++ b/include/apos/mem_nodes.h @@ -2,6 +2,7 @@ #define MM_NODES_H #include +#include void init_mem_blocks(); void destroy_mem_blocks(); diff --git a/include/apos/nodes.h b/include/apos/nodes.h new file mode 100644 index 0000000..80888e1 --- /dev/null +++ b/include/apos/nodes.h @@ -0,0 +1,30 @@ +#ifndef APOS_NODES_H +#define APOS_NODES_H + +#include + +enum node_status { FREE = 0, USED = 1}; +struct node_region { + size_t used_nodes; + + struct node_region *av_next; + struct node_region *av_prev; + + struct node_region *next; + struct node_region *prev; +}; + +struct node_root { + size_t node_size; + + struct node_region *head; + struct node_region *av_head; +}; + +void init_nodes(struct node_root *r, size_t node_size); +void destroy_nodes(struct node_root *r); + +void *get_node(struct node_root *r); +void free_node(struct node_root *r, void *p); + +#endif /* APOS_NODES_H */ -- cgit v1.3