diff options
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); +} |
