pub struct PciTransport { /* private fields */ }
Expand description
PCI transport for VirtIO.
Ref: 4.1 Virtio Over PCI Bus
Implementations§
Source§impl PciTransport
impl PciTransport
Sourcepub fn new<H: Hal>(
root: &mut PciRoot,
device_function: DeviceFunction,
) -> Result<Self, VirtioPciError>
pub fn new<H: Hal>( root: &mut PciRoot, device_function: DeviceFunction, ) -> Result<Self, VirtioPciError>
Construct a new PCI VirtIO device driver for the given device function on the given PCI root controller.
The PCI device must already have had its BARs allocated.
Trait Implementations§
Source§impl Debug for PciTransport
impl Debug for PciTransport
Source§impl Drop for PciTransport
impl Drop for PciTransport
Source§impl Transport for PciTransport
impl Transport for PciTransport
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.