git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: make the demos into dedicated files
[lunaix-os.git]
/
lunaix-os
/
kernel
/
k_init.c
diff --git
a/lunaix-os/kernel/k_init.c
b/lunaix-os/kernel/k_init.c
index 257112e7d438ccaf81f5a28654222ee4db29b445..c173ad9621ae8c39002454daa6dacf2562cf08b7 100644
(file)
--- 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() };
.eip = (void*)__proc0,
.ss = KDATA_SEG,
.eflags = cpu_reflags() };
+ proc0->parent = proc0;
// 方案1:必须在读取eflags之后禁用。否则当进程被调度时,中断依然是关闭的!
// cpu_disable_interrupt();
// 方案1:必须在读取eflags之后禁用。否则当进程被调度时,中断依然是关闭的!
// cpu_disable_interrupt();
@@
-161,7
+162,7
@@
spawn_proc0()
commit_process(proc0);
// 由于时钟中断与APIC未就绪,我们需要手动进行第一次调度。这里也会同时隐式地恢复我们的eflags.IF位
commit_process(proc0);
// 由于时钟中断与APIC未就绪,我们需要手动进行第一次调度。这里也会同时隐式地恢复我们的eflags.IF位
- proc0->state = P
ROC
_RUNNING;
+ proc0->state = P
S
_RUNNING;
asm volatile("pushl %0\n"
"jmp switch_to\n" ::"r"(proc0));
asm volatile("pushl %0\n"
"jmp switch_to\n" ::"r"(proc0));