Features
Documentation
Examples
Repository
Blog
Contact
Features
Documentation
Examples
Repository
Blog
Contact
Features
Supported Hardware
Open Source Software
Memory Protection
Microkernel Architecture
Process Management
Inter-Process Communication
Static Operation
Kernel Tests
Hosted Execution
Overview
Introduction
About
Programmer's model
The Kernel
Drivers
Components
Modularity
Everything is an API
Getting started guides
Get Started with STM32 and CubeMX
Get Started with RP2040 and Pico-SDK
RTOS Benchmarks
Benchmark
Performance History
Blogs
FOSDEM 2026 Talk Recording
FOSDEM 2025 Talk Recording
Performance Take 2
Performance Benchmark
Talks 2025
Transactions
Why Memory Isolation
CMRX on Linux!
Benefits of Userspace Drivers
ESE Kongress 2025 Talk
CMRX on FOSDEM 2025
Documentation
Frequently Asked questions
Kernel API
Interrupt Service Routines
IRQ management
Mutexes / Futexes
Named constants for errors
Notifications
Notify_flags
Remote Procedure Calls
Shared memory
Signals
Standard API
Static initialization
Threading functions
Timers
Timing provider API
Kernel documentation
Context switching
Interrupt service routines
Kernel core
Memory protection
Notifications
Remote Procedure Calls
Signal handling
System calls
Thread scheduling
Timers
Tracing Kernel Events
Transcation subsystem
Porting layer
Examples
Hello World
Remote Procedure Call
Simple Driver
Interrupts
Queues
Synchronization
Timers
Contact
Frequently Asked questions
64kB of
protected
memory ought to be enough for everyone.