Module kernel::registry

source ·




  • Parse Uuids from string literals at compile time.


  • 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.
  • UserVtable 🔒
    A virtual function pointer table (vtable) that specifies how userspace requests are serialized and deserialized.
  • 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).




  • Perform a type-erased userspace handshake, deserializing the RegisteredDriver::Hello message from hello_bytes and returning a future that writes the handshake result to the provided outptr, if the future completes successfully.
  • 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.

Type Definitions