X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7b0dccbab69e806a63c4504c3ddb82e45241985b..d07db7c15d6cf9d6c0fd07ea29cca77a89b02a79:/lunaix-os/kernel/mm/kalloc.c diff --git a/lunaix-os/kernel/mm/kalloc.c b/lunaix-os/kernel/mm/kalloc.c new file mode 100644 index 0000000..c932bb5 --- /dev/null +++ b/lunaix-os/kernel/mm/kalloc.c @@ -0,0 +1,38 @@ +#include +#include + +#include + +#include + +extern uint8_t __kernel_heap_start; + +heap_context_t __kalloc_kheap; + +int +kalloc_init() { + __kalloc_kheap.start = &__kernel_heap_start; + __kalloc_kheap.brk = 0; + + return dmm_init(&__kalloc_kheap); +} + +void* +kmalloc(size_t size) { + return lx_malloc(&__kalloc_kheap, size); +} + +void* +kcalloc(size_t size) { + void* ptr = kmalloc(size); + if (!ptr) { + return NULL; + } + + return memset(ptr, 0, size); +} + +void +kfree(void* ptr) { + lx_free(ptr); +} \ No newline at end of file