diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/apos/mem_nodes.h | 1 | ||||
| -rw-r--r-- | include/apos/nodes.h | 30 |
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 */ |
