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:
- 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§
- 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.