feat(userspace): Call/ReplyRecv IPC, malformed-request replies, servers exit on dead endpoint; drop send/receive compat, select!, async_syscall

This commit is contained in:
2026-10-27 12:06:10 +01:00
parent 2a8a5b0c27
commit e8a2963b24
18 changed files with 96 additions and 101 deletions

View File

@@ -18,9 +18,7 @@ const TICK_DELAY: u64 = 5_000_000;
const MAX_RENDER_CMDS: usize = 140;
fn display_send(req: &DisplayRequest) {
let words = req.encode();
syscall::send(DISPLAY_EP, words[0], words[1], words[2], words[3]);
syscall::receive(DISPLAY_EP);
let _ = syscall::request(DISPLAY_EP, req.encode());
}
fn draw_rect(x: u16, y: u16, w: u16, h: u16, color: u32) {
@@ -67,8 +65,9 @@ extern "C" fn main() {
fn handle_input(snake: &mut Snake) {
// Drain all pending events, apply the latest direction
loop {
let _ = syscall::send(INPUT_EP, 0, 0, 0, 0);
let (tag, kind, _, _) = syscall::receive(INPUT_EP);
let Ok([tag, kind, _, _]) = syscall::request(INPUT_EP, [0; 4]) else {
break;
};
if tag == 0 { break; } // NoEvent — queue drained
if tag == 1 {
match kind {