feat: experimental tty console with scrollback buffer.
[lunaix-os.git] / lunaix-os / kernel / mm / kalloc.c
index 3aba61ec62d5f33a0df6ae1f2cfb1de3a704d325..ba00b09c8c2525f0a3f0d70b50dcdb2703205417 100644 (file)
@@ -13,6 +13,7 @@
  */
 #include <lunaix/mm/dmm.h>
 #include <lunaix/mm/kalloc.h>
+#include <lunaix/mm/vmm.h>
 
 #include <lunaix/common.h>
 #include <lunaix/spike.h>
@@ -64,9 +65,18 @@ static heap_context_t kheap;
 int
 kalloc_init()
 {
-    kheap.start = &__kernel_heap_start;
+    kheap.start = KHEAP_START;
     kheap.brk = NULL;
-    kheap.max_addr = (void*)KSTACK_START;
+    kheap.max_addr =
+      (void*)PROC_START; // 在新的布局中,堆结束的地方即为进程表开始的地方
+
+    for (size_t i = 0; i < KHEAP_SIZE_MB >> 2; i++) {
+        vmm_set_mapping(PD_REFERENCED,
+                        (uintptr_t)kheap.start + (i << 22),
+                        0,
+                        PG_PREM_RW,
+                        VMAP_NOMAP);
+    }
 
     if (!dmm_init(&kheap)) {
         return 0;