X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/8fdcd1575a97862975fa019f09c00453a2a7d8bb..33e7863900e90b0b30e296fa52861965264e2393:/lunaix-os/kernel/k_init.c?ds=sidebyside 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));