From 9c3e0a9de7c57bf3435f07e6f2decb2f0e317776 Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Sun, 26 Nov 2023 18:52:57 -0600 Subject: kernel: list: add a linked-list implementation Add a linked-list implementation using the kmalloc system. Signed-off-by: Danny Holman --- include/kernel/list.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 include/kernel/list.h (limited to 'include') diff --git a/include/kernel/list.h b/include/kernel/list.h new file mode 100644 index 0000000..cc78a4f --- /dev/null +++ b/include/kernel/list.h @@ -0,0 +1,31 @@ +#ifndef LIST_H +#define LIST_H + +#include + +struct list_head { + struct list_head *next; + struct list_head *prev; +}; + +static inline void list_add(struct list_head *new, struct list_head *head) { + new->prev = head; + new->next = head->next; + + head->next = new; + if (head->prev != NULL) + head->prev->next = new; +} + +static inline void list_del(struct list_head *item) { + struct list_head *next = item->next; + struct list_head *prev = item->prev; + if (next != NULL) + next->prev = prev; + if (prev != NULL) + prev->next = next; + item->next = NULL; + item->prev = NULL; +} + +#endif -- cgit v1.2.3