Commit e9d5651
games: move tree/worm/sprouty off colliding IPC endpoints
What:
- tree 31 -> 61
- worm 29 -> 62
- sprouty 15 -> 63
Each game's window-input endpoint is reassigned to the top of the
64-wide endpoint space, above the dense boot-service band (14..=33).
Stale "Revisit when: MAX_ENDPOINTS > 32" comments are rewritten and
re-pointed at ADR-018 (the trigger already fired — the bound is 64).
Why:
Endpoint IDs are ad-hoc `const u32`s with no kernel-enforced
one-owner-per-endpoint check, and IPC queues are per-endpoint global
(SHARDED_IPC.shards[endpoint]). Games written months ago picked
numbers that auto-started boot services later claimed:
- tree=31 collided with usb-host (live): usb-host blocks on
recv_verified(31) and drained the compositor's routed input,
so `play tree` opened a window that ignored all input.
- sprouty=15 collided with terminal-window's front layer (live) —
same input-theft mechanism.
- worm=29 aliases hello-window (disabled in limine.conf) — latent.
Parking games at 61/62/63 clears every auto-started service.
Out of scope:
- ping (19) is collision-free; left unchanged.
- The structural fix is ADR-018's endpoint-reservation table (kernel
rejects RegisterEndpoint(N) from non-owners). This commit is the
band-aid that unblocks the games now; high-end parking can still
re-collide if a service grows past ~34.
- No kernel changes. Each endpoint is referenced only inside its own
game crate; the compositor learns it via the Client::open handshake.
Verification:
- make tree worm sprouty — all three build clean (x86_64).
- make check-deferrals — 0 new (485 baseline).
- make check-doc-refs — 0 new (46 baseline).
- Runtime input routing needs an interactive GUI test:
make run-gui, then `play tree` / `play sprouty` / `play worm`.
Staged files:
user/sprouty/src/main.rs
user/tree/src/main.rs
user/worm/src/main.rs
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 80225e3 commit e9d5651
3 files changed
Lines changed: 42 additions & 35 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
61 | 57 | | |
62 | 58 | | |
63 | 59 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | | - | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
50 | 61 | | |
51 | 62 | | |
52 | 63 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
| |||
0 commit comments