pub enum SomeTransport<'a> {
Mmio(MmioTransport<'a>),
Pci(PciTransport),
HypPci(HypPciTransport),
}Expand description
A wrapper for an arbitrary VirtIO transport, either MMIO or PCI.
Variants§
Mmio(MmioTransport<'a>)
An MMIO transport.
Pci(PciTransport)
A PCI transport.
HypPci(HypPciTransport)
An x86-64 pKVM PCI transport.
Trait Implementations§
Source§impl<'a> Debug for SomeTransport<'a>
impl<'a> Debug for SomeTransport<'a>
Source§impl<'a> From<MmioTransport<'a>> for SomeTransport<'a>
impl<'a> From<MmioTransport<'a>> for SomeTransport<'a>
Source§fn from(mmio: MmioTransport<'a>) -> Self
fn from(mmio: MmioTransport<'a>) -> Self
Converts to this type from the input type.
Source§impl From<PciTransport> for SomeTransport<'_>
impl From<PciTransport> for SomeTransport<'_>
Source§fn from(pci: PciTransport) -> Self
fn from(pci: PciTransport) -> Self
Converts to this type from the input type.
Source§impl Transport for SomeTransport<'_>
impl Transport for SomeTransport<'_>
Source§fn device_type(&self) -> DeviceType
fn device_type(&self) -> DeviceType
Gets the device type.
Source§fn read_device_features(&mut self) -> u64
fn read_device_features(&mut self) -> u64
Reads device features.
Source§fn write_driver_features(&mut self, driver_features: u64)
fn write_driver_features(&mut self, driver_features: u64)
Writes device features.
Source§fn max_queue_size(&mut self, queue: u16) -> u32
fn max_queue_size(&mut self, queue: u16) -> u32
Gets the max size of the given queue.
Source§fn get_status(&self) -> DeviceStatus
fn get_status(&self) -> DeviceStatus
Gets the device status.
Source§fn set_status(&mut self, status: DeviceStatus)
fn set_status(&mut self, status: DeviceStatus)
Sets the device status.
Source§fn set_guest_page_size(&mut self, guest_page_size: u32)
fn set_guest_page_size(&mut self, guest_page_size: u32)
Sets the guest page size.
Source§fn requires_legacy_layout(&self) -> bool
fn requires_legacy_layout(&self) -> bool
Returns whether the transport requires queues to use the legacy layout. Read more
Source§fn queue_set(
&mut self,
queue: u16,
size: u32,
descriptors: PhysAddr,
driver_area: PhysAddr,
device_area: PhysAddr,
)
fn queue_set( &mut self, queue: u16, size: u32, descriptors: PhysAddr, driver_area: PhysAddr, device_area: PhysAddr, )
Sets up the given queue.
Source§fn queue_unset(&mut self, queue: u16)
fn queue_unset(&mut self, queue: u16)
Disables and resets the given queue.
Source§fn queue_used(&mut self, queue: u16) -> bool
fn queue_used(&mut self, queue: u16) -> bool
Returns whether the queue is in use, i.e. has a nonzero PFN or is marked as ready.
Source§fn ack_interrupt(&mut self) -> InterruptStatus
fn ack_interrupt(&mut self) -> InterruptStatus
Acknowledges an interrupt. Read more
Source§fn read_config_generation(&self) -> u32
fn read_config_generation(&self) -> u32
Reads the configuration space generation.
Source§fn read_config_space<T: FromBytes + IntoBytes>(
&self,
offset: usize,
) -> Result<T>
fn read_config_space<T: FromBytes + IntoBytes>( &self, offset: usize, ) -> Result<T>
Reads a value from the device config space.
Source§fn write_config_space<T: IntoBytes + Immutable>(
&mut self,
offset: usize,
value: T,
) -> Result<()>
fn write_config_space<T: IntoBytes + Immutable>( &mut self, offset: usize, value: T, ) -> Result<()>
Writes a value to the device config space.
Source§fn begin_init<F: Flags<Bits = u64> + BitAnd<Output = F> + Debug>(
&mut self,
supported_features: F,
) -> F
fn begin_init<F: Flags<Bits = u64> + BitAnd<Output = F> + Debug>( &mut self, supported_features: F, ) -> F
Begins initializing the device. Read more
Source§fn finish_init(&mut self)
fn finish_init(&mut self)
Finishes initializing the device.
Source§fn read_consistent<T>(&self, f: impl Fn() -> Result<T>) -> Result<T>
fn read_consistent<T>(&self, f: impl Fn() -> Result<T>) -> Result<T>
Safely reads multiple fields from config space by ensuring that the config generation is the
same before and after all reads, and retrying if not.