X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/474a5dd282586c31abfefc7953f148acdc226731..9d62069fd52fa2108b677ffadc7f6138c7641757:/lunaix-os/kernel/k_init.c diff --git a/lunaix-os/kernel/k_init.c b/lunaix-os/kernel/k_init.c index 257112e..c173ad9 100644 --- a/lunaix-os/kernel/k_init.c +++ b/lunaix-os/kernel/k_init.c @@ -121,6 +121,7 @@ spawn_proc0() .eip = (void*)__proc0, .ss = KDATA_SEG, .eflags = cpu_reflags() }; + proc0->parent = proc0; // 方案1:必须在读取eflags之后禁用。否则当进程被调度时,中断依然是关闭的! // cpu_disable_interrupt(); @@ -161,7 +162,7 @@ spawn_proc0() commit_process(proc0); // 由于时钟中断与APIC未就绪,我们需要手动进行第一次调度。这里也会同时隐式地恢复我们的eflags.IF位 - proc0->state = PROC_RUNNING; + proc0->state = PS_RUNNING; asm volatile("pushl %0\n" "jmp switch_to\n" ::"r"(proc0));