Expand description

System Call Types and low level methods

These system call types act as the “wire format” between the kernel and userspace.

These types and functions are NOT generally used outside of creating porcelain functions, or within the kernel itself.

Consider using the porcelain functions directly instead when making userspace system calls.

WARNING!

Care must be taken when modifying these types! Non-additive changes, including ANY field reordering MUST be considered a breaking change!

I have chosen NOT to mark these enums as #[non_exhaustive] as Serde will already fail deserialization on an unknown enum variant.

Breakages of downstream code causing non-exhaustive enum matching errors due to added enum variants are NOT considered a “breaking change” at the moment. If this is important to you, pin the exact common crate version you plan to support, or open an issue to discuss changing this policy.

Modules

Types used in syscall requests - from userspace to kernel

Special types to encode slices across the system call boundary

Types used in syscall responses - from kernel to userspace

Enums

The kind of a given block

Functions

Perform a failable system call