Applications ask the device manager for the tree (enumerate: a header plus ChildEntry records) and subscribe to published add/remove events by handing their endpoint over as the call's capability — the input-service pattern; events are the same ChildAdded/ChildRemoved structs the bus drivers send, one encoding in both directions. device-list is the first client: it prints the tree, subscribes, and narrates the events through a driver restart. The protocol's message maximum is capped at the kernel's IPC MESSAGE_MAXIMUM (256 bytes, ten entries per reply; paging joins the protocol when a tree outgrows one message). The startUserTask debug print is gone: it wrote to serial unserialized against user-space lines and sheared concurrent log markers in half — the root cause of the scenario flakes. |
||
|---|---|---|
| .. | ||
| device.zig | ||
| dma.zig | ||
| heap.zig | ||
| input.zig | ||
| ipc.zig | ||
| process.zig | ||
| runtime.zig | ||
| service.zig | ||
| start.zig | ||
| system-call.zig | ||
| system.zig | ||
| user.ld | ||