Crate twizzler_abi

Source
Expand description

This library provides a common interface for applications that want to talk to the Twizzler kernel, and defines that interface for both applications and the kernel to follow. It’s made of several parts:

  1. System Calls – see syscall and arch::syscall.
  2. Other Application-Kernel ABI definitions (e.g. pager queue entries).

§Should I use these APIs?

All of these interfaces are potentially unstable and should not be used directly by most programs.

Modules§

arch
Architecture-dependent code, will include submodules for the appropriate arch that expose the _start symbol and the raw_syscall symbol.
aux
When running a new program (and thus, initializing a new runtime), the new program expects to receive some information about how it was started, including arguments, env vars, etc. These are passed to the new program through the _start function as an array of AuxEntries as its only argument.
device
APIs for accessing the device tree and device representation objects.
klog
Utilities that enable formatted printing for early runtime init.
kso
Functions to deal with Kernel State Objects (KSOs). These are objects created by the kernel to describe the running state of the system and expose device memory to userspace.
marker
Marker traits used to indicate safety for storing data in objects and using a struct as a base type.
meta
Types that make up object metadata.
object
Low-level object APIs, mostly around IDs and basic things like protection definitions and metadata.
pager
security
simple_mutex
Very simple and unsafe Mutex for internal locking needs. DO NOT USE, USE THE RUST STANDARD LIBRARY MUTEX INSTEAD.
slot
Manage slots in the address space. Currently not finished.
syscall
Wrapper functions around for raw_syscall, providing a typed and safer way to interact with the kernel.
thread
Functions for manipulating threads.
trace
Tracing data structures
upcall
Functions for handling upcalls from the kernel.

Macros§

klog_print
klog_println

Functions§

print_err