diff options
| author | Carlos Maiolino <[email protected]> | 2025-09-14 14:18:41 +0200 |
|---|---|---|
| committer | Carlos Maiolino <[email protected]> | 2025-09-14 14:18:41 +0200 |
| commit | cd2c4e4a25cb41ca6fe622f0ccf1b1a3dd9d5660 (patch) | |
| tree | 319ff940278d98f0010bdcdfcbc08bf22cb6aec0 /src/mm | |
| parent | 833f883ab85d57d8f9cfae5a2181b3e097fae8bd (diff) | |
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 <[email protected]>
Diffstat (limited to 'src/mm')
| -rw-r--r-- | src/mm/kernel_heap.c | 35 |
1 files changed, 35 insertions, 0 deletions
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 <mm/kernel_heap.h> +#include <mm/heap.h> +#include <toxic/config.h> +#include <toxic/vga.h> + +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); +} |
