[feat] Simple Multitask

This commit is contained in:
2026-05-31 12:11:57 +08:00
Unverified
parent 45693c96b5
commit b8212e2127
5 changed files with 307 additions and 3 deletions
+36 -2
View File
@@ -6,6 +6,7 @@
#include <common.h>
#include <memory/pmm.h>
#include <memory/heap.h>
#include <scheduler.h>
#include <fs.h>
extern EFI_SYSTEM_TABLE *ST;
@@ -105,7 +106,40 @@ extern "C" void kernel_main() {
}
pf_print("Welcome to Sylva OS!\n");
serial_write(" Kernel prepared well, start loop.\n");
serial_write(" Kernel prepared well.\n");
while (1) ASM ("hlt"); // 《30天》看多了 (doge
// --- Multitasking demo ---
serial_write("Sylva: creating tasks...\n");
// Task A: prints a message 3 times, yielding between each
task_create("taskA", []() {
for (int i = 0; i < 3; i++) {
serial_write("[taskA] running iteration ");
serial_write_hex(i);
serial_write("\n");
yield();
}
serial_write("[taskA] done\n");
});
// Task B: prints a message 5 times
task_create("taskB", []() {
for (int i = 0; i < 5; i++) {
serial_write("[taskB] hello from taskB #");
serial_write_hex(i);
serial_write("\n");
yield();
}
serial_write("[taskB] done\n");
});
// Task C: short task
task_create("taskC", []() {
serial_write("[taskC] quick task\n");
yield();
serial_write("[taskC] finished\n");
});
serial_write("Sylva: starting scheduler\n");
scheduler_run(); // never returns
}