diff --git a/.vscode/settings.json b/.vscode/settings.json index de89f68f..97f00e33 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -108,7 +108,8 @@ "ahci.h": "c", "slab.h": "c", "boot_info.h": "c", - "pci.h": "c" + "pci.h": "c", + "time.h": "c" }, "C_Cpp.errorSquiggles": "Enabled", "esbonio.sphinx.confDir": "" diff --git a/kernel/main.c b/kernel/main.c index 90402976..e3a6fe56 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -153,9 +153,10 @@ void system_initialize() // fat32_init(); HPET_enable(); - usb_init(); + // 系统初始化到此结束,剩下的初始化功能应当放在初始内核线程中执行 apic_timer_init(); + } //操作系统内核从这里开始执行 diff --git a/kernel/process/process.c b/kernel/process/process.c index df28cba0..89d9b767 100644 --- a/kernel/process/process.c +++ b/kernel/process/process.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -410,7 +411,10 @@ ul initial_kernel_thread(ul arg) // kinfo("initial proc running...\targ:%#018lx", arg); fat32_init(); + usb_init(); + + // 准备切换到用户态 struct pt_regs *regs; current_pcb->thread->rip = (ul)ret_from_system_call;