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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user