diff options
author | Danny Holman <dholman@gymli.org> | 2024-02-16 12:30:49 -0600 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2024-02-16 12:30:49 -0600 |
commit | 1d40d14e09c8c22ffbdf5a5cad95ae552587ce53 (patch) | |
tree | ab419012553bbbb9b1589aafc8ea865cc9dc7daf /include/kernel/data/list.h | |
parent | 19b5c8699f0d201a8ffe41594d966d143320260d (diff) |
include: kernel: move list.h to a data struct directory
Move list.h into a designated directory for data structure definitions.
Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'include/kernel/data/list.h')
-rw-r--r-- | include/kernel/data/list.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/kernel/data/list.h b/include/kernel/data/list.h new file mode 100644 index 0000000..b61cfaa --- /dev/null +++ b/include/kernel/data/list.h @@ -0,0 +1,32 @@ +#ifndef KERNEL_LIST_H +#define KERNEL_LIST_H + +#include <stddef.h> + +struct list_head { + struct list_head *next; + struct list_head *prev; +}; + +static inline void list_add(struct list_head *new, struct list_head *head) { + struct list_head *temp = head; + while (temp->next != NULL) + temp = temp->next; + + temp->next = new; + new->prev = temp; + new->next = NULL; +} + +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 |