summaryrefslogtreecommitdiff
path: root/include/kernel
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-05-27 13:53:52 -0500
committerDanny Holman <dholman@gymli.org>2024-05-27 13:53:52 -0500
commitaaf7355c5ededfcdc877c7f2989fb1ba02dfb848 (patch)
tree0c4588650fe1fc1fa1af2972353a2bc920cf1e68 /include/kernel
parent41cff28f5447b5f669db62ce2a73be98bc5bce37 (diff)
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 <dholman@gymli.org>
Diffstat (limited to 'include/kernel')
-rw-r--r--include/kernel/container_of.h10
-rw-r--r--include/kernel/data/list.h32
-rw-r--r--include/kernel/data/ringbuf.h50
-rw-r--r--include/kernel/io.h9
-rw-r--r--include/kernel/kmalloc.h18
-rw-r--r--include/kernel/string.h18
6 files changed, 0 insertions, 137 deletions
diff --git a/include/kernel/container_of.h b/include/kernel/container_of.h
deleted file mode 100644
index 1b5b444..0000000
--- a/include/kernel/container_of.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef KERNEL_CONTAINER_OF_H
-#define KERNEL_CONTAINER_OF_H
-
-#ifndef container_of
-#define container_of(ptr, type, member) ({ \
- const typeof(((type*)0)->member)*__mptr = (ptr); \
- (type*)((char*)__mptr - offsetof(type, member)); })
-#endif
-
-#endif
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 <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
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 <kernel/kmalloc.h>
-#include <kernel/string.h>
-#include <stdint.h>
-
-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
diff --git a/include/kernel/io.h b/include/kernel/io.h
deleted file mode 100644
index cf8404a..0000000
--- a/include/kernel/io.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef KERNEL_IO_H
-#define KERNEL_IO_H
-
-#include <stdarg.h>
-
-int vkprintf(const char *fmt, va_list args);
-int kprintf(const char *fmt, ...);
-
-#endif
diff --git a/include/kernel/kmalloc.h b/include/kernel/kmalloc.h
deleted file mode 100644
index d8debd1..0000000
--- a/include/kernel/kmalloc.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef KERNEL_KMALLOC_H
-#define KERNEL_KMALLOC_H
-
-#include <stdint.h>
-#include <stddef.h>
-
-struct mem_block {
- uintptr_t start;
- size_t size;
- int alloc;
- struct mem_block *next;
-};
-
-void kmalloc_init(void);
-void* kmalloc(size_t sz);
-void kfree(void *ptr);
-
-#endif
diff --git a/include/kernel/string.h b/include/kernel/string.h
deleted file mode 100644
index 76bf610..0000000
--- a/include/kernel/string.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef STRING_H
-#define STRING_H
-
-#include <stddef.h>
-
-int memcmp(const void *str1, const void *str2, size_t n);
-void* memcpy(void* __restrict dest, const void* __restrict src, size_t n);
-void* memmove(void* __restrict dest, const void* __restrict src, size_t n);
-void* memset(void *str, int c, size_t n);
-int strncmp(const char *str1, const char *str2, size_t n);
-int strcmp(const char *str1, const char *str2);
-size_t strlen(const char *str);
-char* strncpy(char* __restrict dest, const char* __restrict src, size_t n);
-char* strcpy(char* __restrict dest, const char* __restrict src);
-char* strcat(char* __restrict dest, const char* __restrict src);
-char* strtok(char* __restrict str, const char* __restrict delim);
-
-#endif