device-manager: delete the delegated-set scaffolding

The name list and its predicate existed so drivers could move to delegation
one at a time with the suite green throughout. Every driver is delegated
now, so the manager simply hands over whatever device a driver was assigned.

Deleting it caught a real consequence: crash-test finally got delegated too,
and it was still claiming its device — so it got AlreadyClaimed because it
already held it, exited, and the restart drill had nothing to restart. Its
own comment named what the case was really checking: "the respawn only
reaches this line because the kernel released the previous instance's claim
at death". That property still holds, by a different mechanism — the device
reverts to the manager on death and is handed to the replacement, which is
the same guarantee without the race it used to rely on.

All four delegation paths verified: the xHCI controller, the PCI bridge, the
PS/2 two-node singleton, and virtio-gpu's restart re-attach.

Run 3 complete. Suite 118/118.
This commit is contained in:
Daniel Samson
2026-08-08 23:01:29 +01:00
parent df9c1ed827
commit 0eb2420690
3 changed files with 16 additions and 39 deletions
@@ -19,13 +19,15 @@ pub fn main(init: process.Init) void {
const argument = init.arguments.get(1) orelse return; // bare: stay silent
const assigned = std.fmt.parseInt(u64, argument, 10) catch return;
// The respawn only reaches this line because the kernel released the
// previous instance's claim at death. A failed claim exits cleanly — the
// manager reads "meant to stop" and the scenario fails loudly by silence.
device.claim(assigned) catch {
_ = logging.write("crash-test: claim failed\n");
return;
};
// The device arrived with the spawn — this fixture is delegated its hardware like
// any other driver, so it holds `assigned` before its first instruction and has
// nothing to claim (docs/os-development/device-authority.md).
//
// The property this scenario checks is unchanged, only its mechanism: a respawned
// instance still gets the device its predecessor held. It used to arrive because
// the kernel released the dead instance's claim and this one re-took it, racing
// anyone else who wanted it; now the device reverts to the manager on death and is
// handed to the replacement, which is the same guarantee without the race.
var manager: ?ipc.Handle = null;
var tries: u32 = 0;