feat: No more kernel page table switching upon interrupt.
[lunaix-os.git] / lunaix-os / kernel / k_init.c
index c119676bf5874017ac92f1e00bbe681dbf120be1..863f57496a9244bd4f7b4a910cd19d8142e82fbf 100644 (file)
@@ -102,9 +102,7 @@ _kernel_init() {
 void spawn_lxinit() {
     struct proc_info kinit;
 
-    memset(&kinit, 0, sizeof(kinit));
-    kinit.parent = -1;
-    kinit.pid = 1;
+    init_proc(&kinit);
     kinit.intr_ctx = (isr_param) {
         .registers.esp = KSTACK_TOP - 20,
         .cs = KCODE_SEG,
@@ -112,7 +110,8 @@ void spawn_lxinit() {
         .ss = KDATA_SEG,
         .eflags = cpu_reflags()
     };
-    kinit.page_table = dup_pagetable(kinit.pid);
+
+    setup_proc_mem(&kinit, PD_REFERENCED);
 
     // Ok... 准备fork进我们的init进程
     /*
@@ -238,7 +237,7 @@ setup_memory(multiboot_memory_map_t* map, size_t map_size) {
             KERNEL_PID,
             (void*)(VGA_BUFFER_VADDR + (i << PG_SIZE_BITS)), 
             (void*)(VGA_BUFFER_PADDR + (i << PG_SIZE_BITS)), 
-            PG_PREM_RW
+            PG_PREM_URW
         );
     }