IPC wire — message_type index (curated)¶
Transport: syscall 50 (IpcMessage*) and 51 (recv). Legacy 30 / 31 hit the same broker but lack present-window remap — prefer 50 / 51 (see ipc-broker.md).
Struct layout: src/sys/ipc_osl.rs (IpcMessage: sender_pid, target_pid, message_type, 24-byte payload → p1 / p2 / p3 as u64 each in libc helpers).
Policy / broker semantics: ipc-broker.md — coalescing, overflow, purge_target_dead.
This page lists message_type numbers the way syscalls-reference.md lists syscall IDs. Constants are scattered across apps/deskgui, SDK/lib/cstd, and src/net; if code and this table disagree, fix the table in the same PR as the wire change.
Kernel special cases (syscall 50 — before / instead of generic enqueue)¶
Type |
Behavior |
|---|---|
|
In-kernel RX injection into |
9 |
Legacy “IPC SIGKILL”: |
All other types (after routing target_pid == 0 → deskgui.elf by name) go through IPC_BROKER.
WM / compositor (apps/deskgui/src/api/window.rs)¶
Canonical names live in window.rs (and partially duplicated in SDK/lib/cstd/src/wm_v1.rs).
Type |
Const (typical) |
Direction |
Summary |
|---|---|---|---|
1 |
|
app → compositor |
Legacy open inner size. |
2 |
|
app → compositor |
Legacy full-frame present (kernel remaps |
3 |
|
compositor → app |
Mouse (coalesced in broker). |
4 |
|
compositor → app |
Keyboard: |
5 |
|
app → compositor |
Legacy titled open (kernel remaps like 2). |
6 |
|
app → compositor |
Workspace query. |
7 |
|
compositor → app |
Workspace reply. |
16 |
|
app → compositor |
WM v1 envelope. |
17 |
|
app → compositor |
Title / bulk continuation. |
18 |
|
app → compositor |
WM v1 present (kernel remaps like 2). |
32 |
|
compositor → app |
Create / op success. |
33 |
|
compositor → app |
Failure. |
34 |
|
compositor → app |
Focus changed. |
35 |
|
compositor → app |
Window close. |
36 |
|
compositor → app |
Workspace / scale. |
37 |
|
compositor → app |
Client surface size ( |
38 |
|
kernel → compositor |
|
39 |
|
app → compositor |
System file picker: |
40 |
|
compositor → app |
|
41 |
|
compositor → app |
Path fragment: same |
250 |
|
ps2d → compositor |
Decoded key; compositor forwards as 4. |
251 |
|
ps2d → compositor |
Mouse relative + buttons. |
280 |
|
client ↔ |
See |
281 |
|
service → clients |
Status / events. |
282 |
|
↔ compositor / gamesvc |
Policy negotiation. |
Present remap: types 2, 5, 18 — see wm-surface-lifecycle.md §4.
Services (libc / app-local consts)¶
Type |
Const |
Module / app |
Role |
|---|---|---|---|
99 |
(parent exit notify) |
syscall path / generic |
Used in kernel paths for child-exit notification (see process-lifecycle.md); not a single |
100 |
(informal SERVICE_READY) |
e.g. |
Init / bring-up “ready” ping (not a named const in one header — grep |
260 |
|
|
Kernel RX inject. |
261 |
|
|
Raw Ethernet TX to |
270 |
|
|
|
271 |
|
|
Time daemon RPC surface. |
272 |
|
|
Display daemon RPC surface. |
273 |
|
|
Lua control plane ( |
280–282 |
game wire |
|
See WM table. |
290 |
|
|
Wallet stub RPC. |
Coalescing (broker)¶
From src/sys/ipc.rs: types 2, 18 (same sender + type), 3 (same sender + target + type), 37 (same sender + target + type + p1 window handle). See ipc-broker.md §3.
See also¶
wm-surface-lifecycle.md — syscall 50 present map, 224 unmap
syscalls-reference.md — syscall 50 / 51 notes
networking-architecture.md — 260 / 261 vs kernel-owned NIC