From 0e513aa4322411bb5d233a43ce32b6b7d974f23f Mon Sep 17 00:00:00 2001 From: acevest Date: Sun, 14 Nov 2021 23:05:04 +0800 Subject: [PATCH] =?utf8?q?task=E7=9A=84state=E5=AD=97=E6=AE=B5=E6=B7=BB?= =?utf8?q?=E5=8A=A0volatile=E5=85=B3=E9=94=AE=E5=AD=97=E4=BF=AE=E9=A5=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- include/task.h | 2 +- kernel/init.c | 5 +++++ kernel/setup.c | 9 ++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/task.h b/include/task.h index ff6559a..2e698dd 100644 --- a/include/task.h +++ b/include/task.h @@ -55,7 +55,7 @@ typedef union task_union { pid_t pid; pid_t ppid; - unsigned int state; + volatile unsigned int state; long exit_code; unsigned long cr3; diff --git a/kernel/init.c b/kernel/init.c index 073c542..4d0707c 100644 --- a/kernel/init.c +++ b/kernel/init.c @@ -155,6 +155,11 @@ void root_task_entry() { // 所以得先清空一下键盘 inb(0x60); + // 继续内核未完成的初始化 + // 这些初始化在开中断的情况下完成 + void setup_under_irq(); + setup_under_irq(); + kernel_task("init", init_task_entry); kernel_task("test", init_task_entry); kernel_task("user", user_task_entry); diff --git a/kernel/setup.c b/kernel/setup.c index bffaa0f..f951102 100644 --- a/kernel/setup.c +++ b/kernel/setup.c @@ -83,9 +83,6 @@ void setup_kernel() { setup_pci(); - void ide_init(); - ide_init(); - detect_cpu(); printk(version); @@ -97,3 +94,9 @@ void setup_kernel() { setup_fs(); } + +// 在开中断的情况下继续初始化的内容 +void setup_under_irq() { + void ide_init(); + ide_init(); +} \ No newline at end of file -- 2.44.0