mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-21 10:40:00 +00:00
35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
|
|
# CLeonOS Stage4
|
||
|
|
|
||
|
|
## Stage Goal
|
||
|
|
- Add process/task scheduling foundation in CLKS.
|
||
|
|
- Introduce task control blocks and kernel task registry.
|
||
|
|
- Implement timer-driven round-robin time-slice scheduling logic.
|
||
|
|
- Connect scheduler tick updates to IRQ0 interrupt path.
|
||
|
|
|
||
|
|
## Acceptance Criteria
|
||
|
|
- Kernel boots and prints `CLEONOS STAGE4 START`.
|
||
|
|
- Scheduler initializes and logs task count.
|
||
|
|
- At least 3 kernel tasks exist (`idle`, `klogd`, `kworker`).
|
||
|
|
- Timer IRQ invokes scheduler tick handler without panic/reboot.
|
||
|
|
- System stays in idle loop with interrupts and scheduler active.
|
||
|
|
|
||
|
|
## Build Targets
|
||
|
|
- `make setup`
|
||
|
|
- `make iso`
|
||
|
|
- `make run`
|
||
|
|
- `make debug`
|
||
|
|
|
||
|
|
## QEMU Command
|
||
|
|
- `qemu-system-x86_64 -M q35 -m 1024M -cdrom build/CLeonOS-x86_64.iso -serial stdio`
|
||
|
|
|
||
|
|
## Common Bugs and Debugging
|
||
|
|
- Immediate reboot after enabling interrupts:
|
||
|
|
- Verify IDT selector uses runtime `CS` and ISR stubs are linked.
|
||
|
|
- Scheduler task count is 0:
|
||
|
|
- Confirm `clks_scheduler_init()` is called before idle loop.
|
||
|
|
- Build failure on ISR symbols:
|
||
|
|
- Ensure `interrupt_stubs.S` is included and `.S` build rule exists.
|
||
|
|
- Build failure on scheduler symbols:
|
||
|
|
- Ensure `scheduler.c` is in `C_SOURCES` and `scheduler.h` is included where needed.
|
||
|
|
- No periodic scheduling activity:
|
||
|
|
- Verify IRQ0 is unmasked and timer vector 32 path calls scheduler tick handler.
|