acpid: exit cleanly when acpi scheme already registered (hwd double-spawn)

This commit is contained in:
Red Bear OS
2026-07-15 22:56:00 +09:00
parent e087ff8b71
commit d69afbc732
+15 -2
View File
@@ -111,8 +111,21 @@ fn daemon(daemon: daemon::Daemon) -> ! {
.subscribe(socket.inner().raw(), 1, EventFlags::READ)
.expect("acpid: failed to register scheme socket for event queue");
register_sync_scheme(&socket, "acpi", &mut scheme)
.expect("acpid: failed to register acpi scheme to namespace");
if let Err(err) = register_sync_scheme(&socket, "acpi", &mut scheme) {
if err.errno == syscall::EEXIST {
// acpid is reachable via BOTH 41_acpid.service and hwd's ACPI
// backend (drivers/hwd/src/backend/acpi.rs spawns "acpid"), so a
// second instance races to register the "acpi" scheme. That is
// redundant, not fatal: exit cleanly so the duplicate does not
// abort and wedge the boot — the first instance keeps serving.
log::info!("acpid: 'acpi' scheme already registered; exiting duplicate instance");
std::process::exit(0);
}
panic!(
"acpid: failed to register acpi scheme to namespace: {}",
err
);
}
libredox::call::setrens(0, 0).expect("acpid: failed to enter null namespace");