pub struct Registry {
items: HeapFixedVec<RegistryItem>,
counter: u32,
}
Expand description
The driver registry used by the kernel.
Fields§
§items: HeapFixedVec<RegistryItem>
§counter: u32
Implementations§
source§impl Registry
impl Registry
sourcepub fn new(guard: &mut HeapGuard, max_items: usize) -> Self
pub fn new(guard: &mut HeapGuard, max_items: usize) -> Self
Create a new registry with room for up to max_items
registered drivers.
sourcepub fn register_konly<RD: RegisteredDriver>(
&mut self,
kch: &KProducer<Message<RD>>
) -> Result<(), RegistrationError>
pub fn register_konly<RD: RegisteredDriver>( &mut self, kch: &KProducer<Message<RD>> ) -> Result<(), RegistrationError>
Register a driver service ONLY for use in the kernel, including drivers.
Driver services registered with Registry::register_konly can NOT be queried or interfaced with from Userspace. If a registered service has request and response types that are serializable, it can instead be registered with Registry::register which allows for userspace access.
sourcepub fn register<RD>(
&mut self,
kch: &KProducer<Message<RD>>
) -> Result<(), RegistrationError>where
RD: RegisteredDriver,
RD::Request: Serialize + DeserializeOwned,
RD::Response: Serialize + DeserializeOwned,
pub fn register<RD>( &mut self, kch: &KProducer<Message<RD>> ) -> Result<(), RegistrationError>where RD: RegisteredDriver, RD::Request: Serialize + DeserializeOwned, RD::Response: Serialize + DeserializeOwned,
Register a driver service for use in the kernel (including drivers) as well as in userspace.
See Registry::register_konly if the request and response types are not serializable.
sourcepub fn get<RD: RegisteredDriver>(&mut self) -> Option<KernelHandle<RD>>
pub fn get<RD: RegisteredDriver>(&mut self) -> Option<KernelHandle<RD>>
Get a kernelspace (including drivers) handle of a given driver service.
This can be used by drivers and tasks to interface with a registered driver service.
The driver service MUST have already been registered using Registry::register or Registry::register_konly prior to making this call, otherwise no handle will be returned.
sourcepub fn get_userspace<RD>(&mut self) -> Option<UserspaceHandle>where
RD: RegisteredDriver,
RD::Request: Serialize + DeserializeOwned,
RD::Response: Serialize + DeserializeOwned,
pub fn get_userspace<RD>(&mut self) -> Option<UserspaceHandle>where RD: RegisteredDriver, RD::Request: Serialize + DeserializeOwned, RD::Response: Serialize + DeserializeOwned,
Get a handle capable of processing serialized userspace messages to a registered driver service.
The driver service MUST have already been registered using Registry::register or prior to making this call, otherwise no handle will be returned.
Driver services registered with Registry::register_konly cannot be retrieved via a call to Registry::get_userspace.