deviced is the device manager daemon for EriX.
Find a file
Erik Inkinen fd10664f42
All checks were successful
CI / test (push) Successful in 5s
CI / security (push) Successful in 1m27s
CI / minimal-versions (push) Successful in 11s
deviced: drop unstable rustfmt options for stable toolchains
2026-03-23 10:19:51 +02:00
.github Refactor code structure for improved readability and maintainability 2026-03-08 16:27:23 +02:00
src deviced: split runtime lifecycle and startup modules 2026-03-23 09:37:39 +02:00
.editorconfig Initial commit 2026-03-07 11:22:31 +01:00
.gitignore Initial commit 2026-03-07 11:22:31 +01:00
ARCHITECTURE.md deviced: reconcile probe and HAL readiness before driver activation 2026-03-17 13:52:28 +02:00
Cargo.toml deviced: keep runtime path BootConfig-agnostic with compatibility aliases 2026-03-17 03:42:04 +02:00
CODE_OF_CONDUCT.md Initial commit 2026-03-07 11:22:31 +01:00
CONTRIBUTING.md Initial commit 2026-03-07 11:22:31 +01:00
LICENSE Initial commit 2026-03-07 11:22:31 +01:00
linker-deviced.ld deviced: defer driver ready logging until reconciliation settles 2026-03-21 03:31:22 +02:00
linker-phase2-driver-capcheck.ld Refactor code structure for improved readability and maintainability 2026-03-08 16:27:23 +02:00
linker-phase2-driver-hold.ld Refactor code structure for improved readability and maintainability 2026-03-08 16:27:23 +02:00
linker.ld deviced: defer driver ready logging until reconciliation settles 2026-03-21 03:31:22 +02:00
README.md deviced: reconcile probe and HAL readiness before driver activation 2026-03-17 13:52:28 +02:00
ROADMAP.md deviced: reconcile probe and HAL readiness before driver activation 2026-03-17 13:52:28 +02:00
rustfmt.toml deviced: drop unstable rustfmt options for stable toolchains 2026-03-23 10:19:51 +02:00
SECURITY.md docs: align security policy phase numbering 2026-03-11 05:28:11 +02:00

deviced

deviced is the device manager daemon for EriX.

It owns the device-to-driver binding registry, enforces probe+HAL-gated activation, and manages least-capability delivery for each driver through per-process CSpace windows.

Responsibilities

  • Accept root-seeded driver bindings and seal the registry.
  • Reconcile activation state from discovery and HAL/provider registration.
  • Start drivers for seeded devices only when activation policy is satisfied.
  • Configure driver CSpace windows and copy only declared capabilities.
  • Forward driver lifecycle control (start / stop) via typed driver IPC.
  • Expose deterministic driver state via READ_DRIVER.
  • Emit driver-ready stamps from deviced itself (ERIX_DEVICED:READY:<DRIVER>) using a dedicated log color in append flags.

IPC surface

deviced handles the following operations from lib-ipc:

  • IPC_PHASE2_DEVICED_OP_SEED_BINDING
  • IPC_PHASE2_DEVICED_OP_SEED_BINDING_V2
  • IPC_PHASE2_DEVICED_OP_START_DRIVER
  • IPC_PHASE2_DEVICED_OP_STOP_DRIVER
  • IPC_PHASE2_DEVICED_OP_READ_DRIVER
  • IPC_PHASE2_DEVICED_OP_SEAL
  • IPC_PHASE2_DEVICED_OP_REGISTER_HAL
  • IPC_PHASE2_DEVICED_OP_REGISTER_PROVIDER
  • IPC_PHASE2_DEVICED_OP_RESOLVE_PROVIDER
  • IPC_PHASE2_DEVICED_OP_REPORT_DEVICE
  • IPC_PHASE2_DEVICED_OP_REPORT_HOTPLUG

Driver control IPC uses:

  • IPC_PHASE2_DRIVER_OP_START
  • IPC_PHASE2_DRIVER_OP_STOP

Runtime model

  • Registry state: unsealed -> sealed.
  • BootConfig is parsed by rootd; deviced remains BootConfig-agnostic and receives lifecycle intent only through RPCs.
  • Seed operation is idempotent for exact tuple matches.
  • Drivers are not auto-started at seal/startup.
  • Activation is reconciled from:
    • discovery state (REPORT_DEVICE, REPORT_HOTPLUG)
    • HAL readiness (REGISTER_HAL)
    • provider visibility (REGISTER_PROVIDER)
  • Start is denied for unknown/unsealed/running bindings.
  • Stop is denied for unknown/non-running bindings.
  • Responses are deterministic and panic-free.
  • Driver process creation uses delegated management-cap slots (not canonical root slots), so deviced continues functioning after rootd authority shedding checkpoints.

Build

cargo build --all-targets --all-features

Test

cargo test --all-targets --all-features
cargo clippy --all-targets --all-features -- -D warnings

License

ISC.


Build and Test Modes

This repository supports additive runtime and integration feature gates.

  • *-runtime and *-runtime-phase* features select production bootstrap/runtime behavior.
  • *-integration-smoke remains available for synthetic end-to-end validation paths.
  • *-integration-force-fail remains test-only and MUST NOT be enabled for runtime appliance builds.

Compatibility aliases are kept so existing scenario feature names continue to compile while the runtime naming becomes canonical.