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§
Sourcefn handle_io(
&mut self,
port: u16,
is_write: bool,
data: &mut [u8],
) -> Result<(), VmError>
fn handle_io( &mut self, port: u16, is_write: bool, data: &mut [u8], ) -> Result<(), VmError>
Handle an I/O port access
Sourcefn handle_mmio(
&mut self,
addr: u64,
is_write: bool,
data: &mut [u8],
) -> Result<(), VmError>
fn handle_mmio( &mut self, addr: u64, is_write: bool, data: &mut [u8], ) -> Result<(), VmError>
Handle an MMIO access
Sourcefn get_state(&self) -> DeviceState
fn get_state(&self) -> DeviceState
Get the serialized device state for migration
Sourcefn set_state(&mut self, state: &DeviceState) -> Result<(), VmError>
fn set_state(&mut self, state: &DeviceState) -> Result<(), VmError>
Restore device state from migration data