ukernel-sys
System interface types for µKernel — a Rust microkernel with hypervisor, container runtime, and real-time scheduling. DO-178C certification in progress.
This crate defines the ABI between userspace domains and the kernel:
KernelOp— ~30 primitive kernel operations (memory, VFS, network, threads, signals)SubmitEntry/CompleteEntry— submission ring entry types for batched syscallsSubmitRing— shared-memory ring buffer layoutSubsystemId— hashed identity for loadable domain types (POSIX, VMM, etc.)
Architecture
µKernel uses a vectorized syscall model inspired by io_uring. Userspace queues
operations into a shared-memory ring and flushes them with a single SYS_SUBMIT
syscall. The kernel processes the batch, capability-checks each operation, and
writes results to the completion ring. One ring transition for N operations.
Application
↓ (std or no_std)
libposix / ukernel-std
↓ queues KernelOps
Submission Ring (shared page)
↓ SYS_SUBMIT (one ring transition)
µKernel (capability check + execute per op)
↓
Completion Ring (results)
Usage
use ;
// Define a subsystem
const MY_SUBSYSTEM: SubsystemId = from_name;
// Create a submission entry
let entry = new;
no_std
This crate is #![no_std] with zero dependencies. It contains only type
definitions and constants — no I/O, no allocation, no unsafe code.
License
MIT OR Apache-2.0
Links
- µKernel — product information and licensing
- Vinci Consulting — engineering services
- POSIX Conformance Suite — syscall-level PSE53 tests