# ukernel-sys
System interface types for [µKernel](https://americankernel.com) — 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 syscalls
- **`SubmitRing`** — shared-memory ring buffer layout
- **`SubsystemId`** — 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.
```text
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
```rust
use ukernel_sys::{KernelOp, SubmitEntry, SubsystemId};
// Define a subsystem
const MY_SUBSYSTEM: SubsystemId = SubsystemId::from_name(b"my-runtime");
// Create a submission entry
let entry = SubmitEntry::new(
KernelOp::DebugPrint as u16,
[buf_ptr, buf_len, 0, 0, 0],
42, // user_data — returned in completion
);
```
## `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](https://americankernel.com) — product information and licensing
- [Vinci Consulting](https://vinciconsulting.com) — engineering services
- [POSIX Conformance Suite](https://github.com/vinciconsulting/posix-conformance) — syscall-level PSE53 tests