make dmm.c portable
[lunaix-os.git] / 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 (file)
index 0000000..c932bb5
--- /dev/null
@@ -0,0 +1,38 @@
+#include <lunaix/mm/kalloc.h>
+#include <lunaix/mm/dmm.h>
+
+#include <libc/string.h>
+
+#include <stdint.h>
+
+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