lib-ipc defines shared IPC ABI primitives for EriX.
Find a file
Erik Inkinen 49ace9e755
All checks were successful
CI / test (push) Successful in 7s
CI / security (push) Successful in 1m27s
CI / minimal-versions (push) Successful in 11s
lib-ipc: drop unstable rustfmt options for stable toolchains
2026-03-23 10:19:55 +02:00
.github refactor: update milestone terminology to component milestone tracking across documentation 2026-03-05 11:54:45 +02:00
ipc-syscall-x86_64 ipc-syscall: mark syscall arg regs clobbered 2026-03-14 22:42:17 +02:00
src lib-ipc: split IPC body contracts by protocol family 2026-03-23 09:37:39 +02:00
.editorconfig Initial commit 2026-02-27 04:13:39 +01:00
.gitignore Initial commit 2026-02-27 04:13:39 +01:00
ARCHITECTURE.md refactor: update milestone terminology to component milestone tracking across documentation 2026-03-05 11:54:45 +02:00
Cargo.toml Add initial implementation of IPC library with error handling, message headers, and operation IDs 2026-02-27 05:22:06 +02:00
CODE_OF_CONDUCT.md Initial commit 2026-02-27 04:13:39 +01:00
CONTRIBUTING.md refactor: update milestone terminology to component milestone tracking across documentation 2026-03-05 11:54:45 +02:00
LICENSE Initial commit 2026-02-27 04:13:39 +01:00
README.md Update README and enhance IPC body and ID definitions with new types and constants 2026-03-02 15:15:08 +02:00
ROADMAP.md Refine ROADMAP with updated milestones and exit criteria for IPC library development 2026-02-28 04:54:25 +02:00
rustfmt.toml lib-ipc: drop unstable rustfmt options for stable toolchains 2026-03-23 10:19:55 +02:00
SECURITY.md docs: align security policy phase numbering 2026-03-11 05:28:13 +02:00

lib-ipc

lib-ipc defines shared IPC ABI primitives for EriX.

This repository is for mechanism-level IPC contracts used across kernel, root task, and early services. It does not contain service policy.


Scope

lib-ipc is responsible for:

  • shared syscall/operation identifiers for IPC paths
  • message header and envelope layouts
  • endpoint/message rights bit definitions
  • checked encode/decode helpers for fixed-layout IPC payloads
  • common IPC error/status code enums

lib-ipc is not responsible for:

  • scheduler behavior
  • routing/lifecycle policy
  • service startup ordering
  • capability allocation/delegation policy

Single repo, multiple crates/modules:

  • ipc-core (portable, no asm, no unsafe)
    • wire structs, constants, serialization/validation helpers
  • ipc-syscall-x86_64 (arch-specific)
    • inline assembly syscall shim and register ABI mapping
  • ipc-syscall-aarch64 (future)
    • same public contract, different implementation
  • optional facade ipc
    • target/feature-based re-exports

Design Constraints

  • No external crates.
  • Deterministic behavior: same input bytes => same parse/validation result.
  • Validation-first APIs for untrusted IPC payloads.
  • Keep unsafe isolated to arch syscall shims only.

Relationship to Other Repos

  • kernel consumes operation IDs and validates message contracts.
  • rootd and early services share the same message types and result codes.
  • lib-capabi provides capability model constants/types used by IPC payloads.
  • lib-bootstrap provides startup-envelope contracts layered on top of IPC.

Status

Implemented baseline:

  • transport syscall IDs (0x40/0x41/0x42) and result codes
  • typed payload header/body helpers
  • kernel-control operation IDs and fixed request/response body structs
  • Phase0 service operation IDs and status/spawn body structs
  • capability-transfer table parse helpers for typed payloads
  • test-only rootd/service completion syscall/status constants

License

ISC.