refactor: vmm_set_map has option to ignore existed mapping.
[lunaix-os.git] / lunaix-os / kernel / k_init.c
index 971464c9f705a722d4243a8060d142a1f5ab7894..7600caf21e07d348c8e9556a1f23ba12e48aca62 100644 (file)
@@ -83,8 +83,11 @@ _kernel_init()
     // 为内核创建一个专属栈空间。
     for (size_t i = 0; i < (KSTACK_SIZE >> PG_SIZE_BITS); i++) {
         uintptr_t pa = pmm_alloc_page(KERNEL_PID, 0);
-        vmm_set_mapping(
-          PD_REFERENCED, KSTACK_START + (i << PG_SIZE_BITS), pa, PG_PREM_RW);
+        vmm_set_mapping(PD_REFERENCED,
+                        KSTACK_START + (i << PG_SIZE_BITS),
+                        pa,
+                        PG_PREM_RW,
+                        VMAP_NULL);
     }
     kprintf(KINFO "[MM] Allocated %d pages for stack start at %p\n",
             KSTACK_SIZE >> PG_SIZE_BITS,
@@ -207,7 +210,8 @@ setup_memory(multiboot_memory_map_t* map, size_t map_size)
         vmm_set_mapping(PD_REFERENCED,
                         VGA_BUFFER_VADDR + (i << PG_SIZE_BITS),
                         VGA_BUFFER_PADDR + (i << PG_SIZE_BITS),
-                        PG_PREM_URW);
+                        PG_PREM_URW,
+                        VMAP_NULL);
     }
 
     // 更新VGA缓冲区位置至虚拟地址