From cd2c4e4a25cb41ca6fe622f0ccf1b1a3dd9d5660 Mon Sep 17 00:00:00 2001 From: Carlos Maiolino Date: Sun, 14 Sep 2025 14:18:41 +0200 Subject: Add a kernel heap Use the heap API to implement a 100MiB heap to be used by the kernel code. Add example usage to src/kernel.c Signed-off-by: Carlos Maiolino --- src/mm/kernel_heap.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/mm/kernel_heap.c (limited to 'src/mm/kernel_heap.c') diff --git a/src/mm/kernel_heap.c b/src/mm/kernel_heap.c new file mode 100644 index 0000000..e53057c --- /dev/null +++ b/src/mm/kernel_heap.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include + +struct heap kernel_heap; + +struct heap_table kernel_heap_table; + +void +kernel_heap_init() +{ + int ret; + void *end = (void *)(KERNEL_HEAP_ADDR + KERNEL_HEAP_SIZE_BYTES); + + kernel_heap_table.entries = (unsigned char *)KERNEL_HEAP_TBL_ADDR; + kernel_heap_table.count = KERNEL_HEAP_ENTRIES; + + ret = heap_create(&kernel_heap, + (void *)KERNEL_HEAP_ADDR, + end, + &kernel_heap_table); + + if (ret < 0) + vprintl("Failed to create kernel's heap\n"); +} + +void * kmalloc(size_t size) +{ + return heap_malloc(&kernel_heap, size); +} + +void kfree(void *ptr) { + heap_free(&kernel_heap, ptr); +} -- cgit v1.2.3