Modules
- A partial list of known UUIDs of driver services
Macros
- Parse
Uuid
s from string literals at compile time.
Structs
- A wrapper for a message TO and FROM a driver service. Used to be able to add additional message metadata without changing the fundamental message type.
- A KernelHandle is used to send typed messages to a kernelspace Driver service.
- The Message kind represents a full reply/response sequence to a driver service. This is the concrete type received by the driver service.
- The driver registry used by the kernel.
- Right now we don’t use a real HashMap, but rather a hand-rolled index map. Therefore our registry is basically a
Vec<RegistryItem>
. - The payload of a registry item.
- A UserspaceHandle is used to process incoming serialized messages from userspace. It contains a method that can be used to deserialize messages from a given UUID, and send that request (if the deserialization is successful) to a given driver service.
- A Universally Unique Identifier (UUID).
Enums
- A
ReplyTo
is used to allow the CLIENT of a service to choose the way that the driver SERVICE replies to us. Essentially, this acts as a “self addressed stamped envelope” for the SERVICE to use to reply to the CLIENT.
Traits
- A marker trait designating a registerable driver service.
Functions
- map_deser 🔒 ⚠A monomorphizable function that allows us to store the serialization type within the function itself, allowing for a type-erased function pointer to be stored inside of the registry.