aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2022-04-16 19:25:05 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2022-04-16 19:25:05 +0300
commite71dd2d9fe1cc3a6d074f9c1894e2c5200cecdb1 (patch)
treec698f756f38f0ebe6e549f32e9bc4b7647d40b5d /include
parent4c6be9cb63ff66ce49a6f733c1e00d1889f2c95f (diff)
downloadkmi-e71dd2d9fe1cc3a6d074f9c1894e2c5200cecdb1.tar.gz
kmi-e71dd2d9fe1cc3a6d074f9c1894e2c5200cecdb1.zip
create more general node structure
+ Allow for easier handling of other subsystems that want to use nodes, mainly tcb and possibly dev_mem
Diffstat (limited to 'include')
-rw-r--r--include/apos/mem_nodes.h1
-rw-r--r--include/apos/nodes.h30
2 files changed, 31 insertions, 0 deletions
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 <apos/vmem.h>
+#include <apos/nodes.h>
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 <apos/types.h>
+
+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 */