feat(userspace): programs in /bin w/o .elf; bin manifests (needs = display) so shell runs snake; Ctrl+C kills foreground via terminal interrupt notification; ctrl keys; sleep

This commit is contained in:
2026-10-27 21:16:00 +01:00
parent 1fc5a54f06
commit 83809bbe94
33 changed files with 608 additions and 121 deletions

View File

@@ -11,7 +11,7 @@ pub fn run() -> ! {
// Slot 0 holds the endpoint init delegated. Init has no process
// creation authority to hand on yet, so Launch reports an error.
let mut srv = server::SessionServer::new(None);
let _ = srv.register_app("snake", "/apps/snake.elf");
let _ = srv.register_app("snake", "bin/snake");
let ep = types::bounded::CapSlot::new(0).unwrap();
server_framework::serve(&mut srv, ep)
}

View File

@@ -5,7 +5,7 @@ use server_framework::Server;
fn test_server() -> SessionServer {
let cap = types::bounded::CapSlot::new(0).unwrap();
let mut s = SessionServer::new(Some(cap));
s.register_app("snake", "/apps/snake.elf").unwrap();
s.register_app("snake", "bin/snake").unwrap();
s.register_app("clock", "/apps/clock.elf").unwrap();
s
}
@@ -108,7 +108,7 @@ fn the_app_table_fills_up_without_panicking() {
#[test]
fn launching_needs_process_creation_authority() {
let mut server = SessionServer::new(None);
server.register_app("snake", "/apps/snake.elf").unwrap();
server.register_app("snake", "bin/snake").unwrap();
let resp = server.handle(SessionRequest::Launch { app: AppId::new(0) });
assert_eq!(resp, SessionResponse::Error);
}