pub struct MmioTransport { /* private fields */ }
Expand description
MMIO Device Register Interface.
Ref: 4.2.2 MMIO Device Register Layout and 4.2.4 Legacy interface
Implementations§
Source§impl MmioTransport
impl MmioTransport
Sourcepub unsafe fn new(header: NonNull<VirtIOHeader>) -> Result<Self, MmioError>
pub unsafe fn new(header: NonNull<VirtIOHeader>) -> Result<Self, MmioError>
Constructs a new VirtIO MMIO transport, or returns an error if the header reports an unsupported version.
§Safety
header
must point to a properly aligned valid VirtIO MMIO region, which must remain valid
for the lifetime of the transport that is returned.
Sourcepub fn version(&self) -> MmioVersion
pub fn version(&self) -> MmioVersion
Gets the version of the VirtIO MMIO transport.
Trait Implementations§
Source§impl Debug for MmioTransport
impl Debug for MmioTransport
Source§impl Drop for MmioTransport
impl Drop for MmioTransport
Source§impl Transport for MmioTransport
impl Transport for MmioTransport
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) -> bool
fn ack_interrupt(&mut self) -> bool
Acknowledges an interrupt. Read more
Source§fn config_space<T>(&self) -> Result<NonNull<T>, Error>
fn config_space<T>(&self) -> Result<NonNull<T>, Error>
Gets the pointer to the 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.