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 by debug_put_char.
  • Like std::println!, except backed by debug_put_char.
  • Declares a symbol via which the microkit tool can inject a memory region’s address, and returns the memory region’s address at runtime.
  • Declares a symbol via which the microkit tool can inject a variable declared by e.g. setvar_vaddr, and returns the variable’s value at runtime.

Structs§

Enums§

Constants§

Traits§

  • Trait for the application-specific part of a protection domain’s main loop.

Functions§

  • Corresponds to microkit_mr_get.
  • Returns a pointer to the protection domain’s sel4::IpcBuffer.
  • Returns whether this protection domain is a passive server.
  • Returns the name of this protection domain.
  • Corresponds to microkit_mr_set.
  • Provides access to the protection domain’s message registers, viewed as an array of bytes.
  • Provides mutable access to the protection domain’s message registers, viewed as an array of bytes.
  • Provides access to the protection domain’s message registers.
  • Provides mutable access to the protection domain’s message registers.

Type Aliases§

Attribute Macros§

  • Declares a function to be the the protection domain’s initialization function.