#include #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 * kzalloc(size_t size) { void * ptr = kmalloc(size); memset(ptr, 0, size); return ptr; } void kfree(void *ptr) { heap_free(&kernel_heap, ptr); }