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