Crate sel4_microkit
source ·Expand description
A foundation for pure-Rust seL4 Microkit protection domains.
See the seL4 Microkit manual for non-Rust-specific documentation about the seL4 Microkit.
See the demo for a concrete example of this crate in action.
This crate depends, at build time, on the libsel4 headers. It requires that either
$SEL4_INCLUDE_DIRS
contains a colon-separated list of include paths for the libsel4 headers,
or that $SEL4_PREFIX
is set, in which case $SEL4_PREFIX/libsel4/include
is used.
The microkit
tool expects protection domain binaries to expose a few symbols. All protection
domains must contain the symbol __sel4_ipc_buffer_obj
. Furthermore, for protection domains
with memory regions, the microkit
tool injects the addresses of these memory regions at build
time by patching designated symbols. The
*-sel4-microkit{,-minimal}.json
rustc
target specs distributed as part of the rust-sel4
project provide __sel4_ipc_buffer_obj
, and the
memory_region_symbol
macro provides a conveneint way to declare memory region address
symbols.
Use the protection_domain
macro to declare the initialization function, stack size, and,
optionally, heap and heap size.
Modules§
Macros§
- Like
std::print
, except backed bydebug_put_char
. - Like
std::println
, except backed bydebug_put_char
. - Declares the initialization function, stack size, and, optionally, heap and heap size.
- Declares a symbol via which the
microkit
tool can inject a memory region’s address, and returns the memory region’s address at runtime.
Structs§
- A channel between this protection domain and another, identified by a channel index.
- A handle to a child protection domain, identified by a child protection domain index.
- An action deferred for syscall coalescing using
Handler::take_deferred_action
. - Error type returned by
Channel::irq_ack
. - A
Handler
implementation which does not override any of the default method implementations.
Enums§
- A channel interface for which actions can be deferred.
- The error type for errors that can never happen.
Traits§
- Trait for the application-specific part of a protection domain’s main loop.
Functions§
- Returns whether this projection domain is a passive server.
- Returns the name of this projection domain.
Type Aliases§
Attribute Macros§
- Declares the initialization function, stack size, and, optionally, heap and heap size.