lib-ipc defines shared IPC ABI primitives for EriX.
- Rust 100%
| .github | ||
| ipc-syscall-x86_64 | ||
| src | ||
| .editorconfig | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| Cargo.toml | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
| ROADMAP.md | ||
| rustfmt.toml | ||
| SECURITY.md | ||
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
Recommended Internal Split
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
unsafeisolated to arch syscall shims only.
Relationship to Other Repos
kernelconsumes operation IDs and validates message contracts.rootdand early services share the same message types and result codes.lib-capabiprovides capability model constants/types used by IPC payloads.lib-bootstrapprovides 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.