From 413d09388bf33c658f3e71b18e4b069f18461393 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Fri, 16 Feb 2024 18:28:14 +0100 Subject: General cleanup --- kernel/lib/stack.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 kernel/lib/stack.c (limited to 'kernel/lib/stack.c') diff --git a/kernel/lib/stack.c b/kernel/lib/stack.c new file mode 100644 index 0000000..7f31867 --- /dev/null +++ b/kernel/lib/stack.c @@ -0,0 +1,35 @@ +#include +#include +#include + +void stack_init(struct stack *s) { + s->head = NULL; +} + +// 1 = Success +// 0 = Failure +int stack_push(struct stack *s, void *data) { + struct entry *new_entry = kmalloc(sizeof(struct entry)); + if (NULL == new_entry) { + return 0; + } + new_entry->ptr = data; + + new_entry->next = s->head; + s->head = new_entry; + return 1; +} + +// Returns data on success +// Returns NULL on failure +void *stack_pop(struct stack *s) { + struct entry *recieved_entry = s->head; + if (NULL == recieved_entry) { + return NULL; + } + s->head = recieved_entry->next; + + void *r = recieved_entry->ptr; + kfree(recieved_entry); + return r; +} -- cgit v1.2.3