c932bb5ff49ea5e45d0afe67b1e389d34855f0c9
[lunaix-os.git] / lunaix-os / kernel / mm / kalloc.c
1 #include <lunaix/mm/kalloc.h>
2 #include <lunaix/mm/dmm.h>
3
4 #include <libc/string.h>
5
6 #include <stdint.h>
7
8 extern uint8_t __kernel_heap_start;
9
10 heap_context_t __kalloc_kheap;
11
12 int
13 kalloc_init() {
14     __kalloc_kheap.start = &__kernel_heap_start;
15     __kalloc_kheap.brk = 0;
16
17     return dmm_init(&__kalloc_kheap);
18 }
19
20 void*
21 kmalloc(size_t size) {
22     return lx_malloc(&__kalloc_kheap, size);
23 }
24
25 void*
26 kcalloc(size_t size) {
27     void* ptr = kmalloc(size);
28     if (!ptr) {
29         return NULL;
30     }
31
32     return memset(ptr, 0, size);
33 }
34
35 void
36 kfree(void* ptr) {
37     lx_free(ptr);
38 }