summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-03-28 21:55:33 -0500
committerDanny Holman <dholman@gymli.org>2024-03-28 21:55:33 -0500
commit3b66779d9a8325c77c6cfbf1565885f98da5378f (patch)
tree38a1359cbaa1357479a8d57b7c206b190012e783 /include
parentcbe2690cd5d1b290633c466ebb4df7b64b09b037 (diff)
arch: i386: kernel: implement a kmalloc function
Add a basic kmalloc implementation. This allows the kernel to allocate blocks smaller than a whole page. Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'include')
-rw-r--r--include/kernel/data/ringbuf.h2
-rw-r--r--include/kernel/kmalloc.h18
2 files changed, 19 insertions, 1 deletions
diff --git a/include/kernel/data/ringbuf.h b/include/kernel/data/ringbuf.h
index 4f30874..25a7125 100644
--- a/include/kernel/data/ringbuf.h
+++ b/include/kernel/data/ringbuf.h
@@ -1,7 +1,7 @@
#ifndef KERNEL_RINGBUF_H
#define KERNEL_RINGBUF_H
-#include <kernel/mem.h>
+#include <kernel/kmalloc.h>
#include <kernel/string.h>
#include <stdint.h>
diff --git a/include/kernel/kmalloc.h b/include/kernel/kmalloc.h
new file mode 100644
index 0000000..d8debd1
--- /dev/null
+++ b/include/kernel/kmalloc.h
@@ -0,0 +1,18 @@
+#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