fix: full init boot logic works — CreateProcess no longer spawns threads, boot uses out-param to avoid sret bug

- CreateProcess only creates process + grants cap, no thread spawning
- boot::boot takes &mut BootResult instead of returning it (fixes -> ! sret convention issue)
- Init creates 6 server processes, sets up supervisor, enters receive loop
- No faults on QEMU with full boot sequence
This commit is contained in:
2026-10-18 04:57:20 +02:00
parent 29cd0e7dfe
commit ffde4065ba
3 changed files with 27 additions and 35 deletions

View File

@@ -7,6 +7,12 @@ pub mod shutdown;
pub mod supervisor;
pub fn run() -> ! {
// Phase 1: just prove we can run from disk and exit cleanly
userspace::syscall::exit();
let create_cap = types::bounded::CapSlot::new(0)
.unwrap_or_else(|| unreachable!());
let mut result = boot::BootResult::empty();
boot::boot(&manifest::SNAKE_MANIFEST, create_cap, &mut result);
let mut sup = boot::create_supervisor(&manifest::SNAKE_MANIFEST, &result);
sup.run(create_cap);
}