From 501a706643a056863b6ea214882a2be270966f87 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Tue, 16 Aug 2022 18:03:58 +0200 Subject: libk/list.h; reading mmap from multiboot2 --- kernel/src/libk/list.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 kernel/src/libk/list.c (limited to 'kernel/src/libk') diff --git a/kernel/src/libk/list.c b/kernel/src/libk/list.c new file mode 100644 index 0000000..5f75845 --- /dev/null +++ b/kernel/src/libk/list.c @@ -0,0 +1,37 @@ +#include +#include + +void add_to_list_head(list_t** ptr, void* data) +{ + list_t* node = (list_t*)kalloc(sizeof(list_t)); + node->data = data; + + node->next = *ptr; + *ptr = node; +} + +void add_to_list_tail(list_t** ptr, void* data) +{ + list_t* node = (list_t*)kalloc(sizeof(list_t)); + node->data = data; + + if (*ptr == NULL) { + *ptr = node; + } else { + list_t* tmp = *ptr; + while (tmp->next != NULL) + tmp = tmp->next; + tmp->next = node; + } +} + +void free_list(list_t** ptr) +{ + if (*ptr == NULL) + return; + + for (list_t* tmp = (*ptr)->next; tmp != NULL; tmp = tmp->next) { + kfree(*ptr); + *ptr = tmp; + } +} -- cgit v1.2.3