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. The Runtime – see runtime.
  2. System Calls – see syscall and arch::syscall.
  3. 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§

  • Architecture-dependent code, will include submodules for the appropriate arch that expose the _start symbol and the raw_syscall symbol.
  • 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.
  • APIs for accessing the device tree and device representation objects.
  • Utilities that enable formatted printing for early runtime init.
  • 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 traits used to indicate safety for storing data in objects and using a struct as a base type.
  • Types that make up object metadata.
  • Low-level object APIs, mostly around IDs and basic things like protection definitions and metadata.
  • This mod implements the [twizzler_runtime_api::Runtime] trait as the “minruntime”, or minimal runtime implementation. The word minimal is pretty subjective, but here we’re roughly saying “it’s the runtime that you can use to interact with the kernel and twizzler-abi directly, with no additional support”.
  • Manage slots in the address space. Currently not finished.
  • Wrapper functions around for raw_syscall, providing a typed and safer way to interact with the kernel.
  • Functions for manipulating threads.
  • Functions for handling upcalls from the kernel.

Macros§