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
feat: No more kernel page table switching upon interrupt.
[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 c119676bf5874017ac92f1e00bbe681dbf120be1..863f57496a9244bd4f7b4a910cd19d8142e82fbf 100644
(file)
--- a/
lunaix-os/kernel/k_init.c
+++ b/
lunaix-os/kernel/k_init.c
@@
-102,9
+102,7
@@
_kernel_init() {
void spawn_lxinit() {
struct proc_info kinit;
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,
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()
};
.ss = KDATA_SEG,
.eflags = cpu_reflags()
};
- kinit.page_table = dup_pagetable(kinit.pid);
+
+ setup_proc_mem(&kinit, PD_REFERENCED);
// Ok... 准备fork进我们的init进程
/*
// 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)),
KERNEL_PID,
(void*)(VGA_BUFFER_VADDR + (i << PG_SIZE_BITS)),
(void*)(VGA_BUFFER_PADDR + (i << PG_SIZE_BITS)),
- PG_PREM_RW
+ PG_PREM_
U
RW
);
}
);
}