From aaf7355c5ededfcdc877c7f2989fb1ba02dfb848 Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Mon, 27 May 2024 13:53:52 -0500 Subject: libk: create a subset libc for kernel use Create a subset of the C library for use inside the kernel. Signed-off-by: Danny Holman --- include/kernel/data/list.h | 32 --------------------------- include/kernel/data/ringbuf.h | 50 ------------------------------------------- 2 files changed, 82 deletions(-) delete mode 100644 include/kernel/data/list.h delete mode 100644 include/kernel/data/ringbuf.h (limited to 'include/kernel/data') diff --git a/include/kernel/data/list.h b/include/kernel/data/list.h deleted file mode 100644 index b61cfaa..0000000 --- a/include/kernel/data/list.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef KERNEL_LIST_H -#define KERNEL_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) { - 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 diff --git a/include/kernel/data/ringbuf.h b/include/kernel/data/ringbuf.h deleted file mode 100644 index 25a7125..0000000 --- a/include/kernel/data/ringbuf.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef KERNEL_RINGBUF_H -#define KERNEL_RINGBUF_H - -#include -#include -#include - -struct ringbuf { - void *buffer; - void *buf_end; - uint32_t capacity; - uint32_t count; - uint32_t size; - void *head; - void *tail; -}; - -static inline void rb_init(struct ringbuf *rb, uint32_t capacity, uint32_t size) { - rb->buffer = kmalloc(capacity * size); - rb->buf_end = (char*)rb->buffer + (capacity * size); - rb->capacity = capacity; - rb->size = size; - rb->head = rb->buffer; - rb->tail = rb->buffer; -} - -static inline int rb_push_back(struct ringbuf *rb, const void *item, size_t size) { - if (rb->count == rb->capacity) - return -1; - if (size > rb->size) - return -1; - - void *tmp = rb->tail + rb->size; - if (tmp > rb->head + rb->capacity * rb->size) - rb->tail = rb->head; - memcpy(rb->tail, item, size); - rb->tail += rb->size; - rb->count++; - return 0; -} - -static inline void rb_pop_front(struct ringbuf *rb, void *item) { - memcpy(item, rb->tail, rb->size); - rb->tail = (char*)rb->tail + rb->size; - if (rb->tail == rb->buf_end) - rb->tail = rb->buffer; - rb->count--; -} - -#endif -- cgit v1.2.3