BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / commit / ca4f3abc7b46ecf67b6a72e75989dc6eccead09a / kernel

// Related

Nucleus

Barry Multi-core scheduling ca4f3ab (3 years, 3 months ago)
diff --git a/kernel/acpi/apic.c b/kernel/acpi/apic.c
index 4d969f5..8bdfbf8 100644
--- a/kernel/acpi/apic.c
+++ b/kernel/acpi/apic.c
@@ -10,6 +10,7 @@
 #include <string.h>
 #include <nucleus/memory.h>
 #include <nucleus/cpu.h>
+#include <nucleus/task.h>
 #include <io.h>
 #include "acpi.h"
 
@@ -219,13 +220,12 @@ init_apic(struct SDTHeader *header)
 _Noreturn void
 ap_startup(void)
 {
+	/* Set up CPU environment */
 	enable_apic();
 	cpu_load();
-	apic_start_timer();
 	cpu_load_paging();
+	apic_start_timer();
 
-	/* Do nothing */
-	asm volatile("cli");
-	while (1)
-		asm volatile("hlt");
+	/* Start running tasks */
+	schedule();
 }
diff --git a/kernel/main.c b/kernel/main.c
index 34bb397..0b45511 100644
--- a/kernel/main.c
+++ b/kernel/main.c
@@ -46,8 +46,6 @@ cpu_load(void)
 	asm volatile("sti");
 }
 
-#include <io.h>
-
 /* Kernel main function */
 _Noreturn void
 kmain(struct MultibootInfo *mbinfo)