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

DeviceModelInterface

Trait DeviceModelInterface 

Source
pub trait DeviceModelInterface: Send {
    // Required methods
    fn handle_io(
        &mut self,
        port: u16,
        is_write: bool,
        data: &mut [u8],
    ) -> Result<(), VmError>;
    fn handle_mmio(
        &mut self,
        addr: u64,
        is_write: bool,
        data: &mut [u8],
    ) -> Result<(), VmError>;
    fn get_state(&self) -> DeviceState;
    fn set_state(&mut self, state: &DeviceState) -> Result<(), VmError>;
}
Expand description

Trait for device models that handle I/O and MMIO

Required Methods§

Source

fn handle_io( &mut self, port: u16, is_write: bool, data: &mut [u8], ) -> Result<(), VmError>

Handle an I/O port access

Source

fn handle_mmio( &mut self, addr: u64, is_write: bool, data: &mut [u8], ) -> Result<(), VmError>

Handle an MMIO access

Source

fn get_state(&self) -> DeviceState

Get the serialized device state for migration

Source

fn set_state(&mut self, state: &DeviceState) -> Result<(), VmError>

Restore device state from migration data

Implementors§