⚠️ VeridianOS Kernel Documentation - This is low-level kernel code. All functions are unsafe unless explicitly marked otherwise. no_std

Driver

Trait Driver 

Source
pub trait Driver: Send + Sync {
    // Required methods
    fn name(&self) -> &str;
    fn supported_classes(&self) -> Vec<DeviceClass>;
    fn supports_device(&self, device: &DeviceInfo) -> bool;
    fn probe(&mut self, device: &DeviceInfo) -> Result<(), KernelError>;
    fn attach(&mut self, device: &DeviceInfo) -> Result<(), KernelError>;
    fn detach(&mut self, device: &DeviceInfo) -> Result<(), KernelError>;
    fn suspend(&mut self) -> Result<(), KernelError>;
    fn resume(&mut self) -> Result<(), KernelError>;
    fn handle_interrupt(&mut self, irq: u8) -> Result<(), KernelError>;
    fn read(
        &mut self,
        offset: u64,
        buffer: &mut [u8],
    ) -> Result<usize, KernelError>;
    fn write(&mut self, offset: u64, data: &[u8]) -> Result<usize, KernelError>;
    fn ioctl(&mut self, cmd: u32, arg: u64) -> Result<u64, KernelError>;
}
Expand description

Driver operations trait

Required Methods§

Source

fn name(&self) -> &str

Get driver name

Source

fn supported_classes(&self) -> Vec<DeviceClass>

Get supported device classes

Source

fn supports_device(&self, device: &DeviceInfo) -> bool

Check if driver supports a device

Source

fn probe(&mut self, device: &DeviceInfo) -> Result<(), KernelError>

Probe device

Source

fn attach(&mut self, device: &DeviceInfo) -> Result<(), KernelError>

Attach to device

Source

fn detach(&mut self, device: &DeviceInfo) -> Result<(), KernelError>

Detach from device

Source

fn suspend(&mut self) -> Result<(), KernelError>

Suspend device

Source

fn resume(&mut self) -> Result<(), KernelError>

Resume device

Source

fn handle_interrupt(&mut self, irq: u8) -> Result<(), KernelError>

Handle interrupt

Source

fn read(&mut self, offset: u64, buffer: &mut [u8]) -> Result<usize, KernelError>

Read from device

Source

fn write(&mut self, offset: u64, data: &[u8]) -> Result<usize, KernelError>

Write to device

Source

fn ioctl(&mut self, cmd: u32, arg: u64) -> Result<u64, KernelError>

Device control (ioctl)

Implementors§