irqd is the interrupt routing daemon for EriX.
- Rust 100%
| .github | ||
| src | ||
| .editorconfig | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| Cargo.toml | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| linker.ld | ||
| README.md | ||
| ROADMAP.md | ||
| rustfmt.toml | ||
| SECURITY.md | ||
irqd
irqd is the interrupt routing daemon for EriX.
It bridges kernel interrupt events to userspace handlers through a deterministic seeded-and-sealed registration policy and explicit ACK flow.
Status
- IRQ routing path is implemented for
IPC_INTERRUPT_LINE_LAPIC_TIMER. - Root orchestration integration is implemented (
named -> timed -> logd -> crashd -> irqd -> ...). - Positive, SMP, and missing-service negative VM scenarios are implemented and passing.
Runtime model
irqd lifecycle:
- Startup envelope validation and ready reply.
- Self-registration with
named. - Root-seeded handler tuple intake (
SEED_HANDLER) andSEAL. - Handler activation by exact tuple match (
REGISTER_HANDLER). - Interrupt wait/dispatch loop:
- wait kernel interrupt event,
- send typed notify payload to registered handler endpoint,
- require explicit
ACKbefore the next delivery for the line.
Mask policy is controlled via SET_MASK, mapped to kernel interrupt-line
configuration.
IPC surface
Handled operations (from lib-ipc):
IPC_PHASE2_IRQD_OP_SEED_HANDLERIPC_PHASE2_IRQD_OP_REGISTER_HANDLERIPC_PHASE2_IRQD_OP_SET_MASKIPC_PHASE2_IRQD_OP_ACKIPC_PHASE2_IRQD_OP_SEAL
Notify payload:
Phase2IrqdEventNotifyV1
Determinism and failures
irqd returns deterministic result classes (OK, DENIED,
INVALID_ARGUMENT, NOT_FOUND, BUSY) for malformed or unauthorized
requests.
No panic path is used for ordinary runtime request failures.
Build and test
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features
Dependencies
lib-bootstraplib-capabilib-ipclib-serviceipc-syscall-x86_64
No third-party crates are used.