pub struct VirtioTransport {
pub transport_type: TransportType,
pub base: u64,
pub pci_modern: PciModernConfig,
}Expand description
Unified VirtIO transport handle
Fields§
§transport_type: TransportTypeTransport type
base: u64For MMIO: the MMIO base address For PCI Modern: common_cfg base address
pci_modern: PciModernConfigPCI Modern specific config (only valid if transport_type == PciModern)
Implementations§
Source§impl VirtioTransport
impl VirtioTransport
Sourcepub fn pci_modern(config: PciModernConfig) -> Self
pub fn pci_modern(config: PciModernConfig) -> Self
Create PCI Modern transport
Sourcepub fn get_status(&self) -> u8
pub fn get_status(&self) -> u8
Get device status
Sourcepub fn set_status(&self, status: u8)
pub fn set_status(&self, status: u8)
Set device status
Sourcepub fn read_features(&self) -> u64
pub fn read_features(&self) -> u64
Read device feature bits (64-bit)
Sourcepub fn write_features(&self, features: u64)
pub fn write_features(&self, features: u64)
Write driver-accepted features
Sourcepub fn get_num_queues(&self) -> u16
pub fn get_num_queues(&self) -> u16
Get number of queues (PCI Modern only, MMIO needs different approach)
Sourcepub fn select_queue(&self, queue_idx: u16)
pub fn select_queue(&self, queue_idx: u16)
Select a queue for configuration
Sourcepub fn get_queue_size(&self) -> u16
pub fn get_queue_size(&self) -> u16
Get max queue size for selected queue
Sourcepub fn set_queue_size(&self, size: u16)
pub fn set_queue_size(&self, size: u16)
Set queue size
Sourcepub fn set_queue_desc(&self, addr: u64)
pub fn set_queue_desc(&self, addr: u64)
Set queue descriptor table address
Sourcepub fn set_queue_avail(&self, addr: u64)
pub fn set_queue_avail(&self, addr: u64)
Set queue available ring address
Sourcepub fn set_queue_used(&self, addr: u64)
pub fn set_queue_used(&self, addr: u64)
Set queue used ring address
Sourcepub fn enable_queue(&self)
pub fn enable_queue(&self)
Enable the selected queue
Sourcepub fn get_notify_addr(&self, queue_idx: u16) -> u64
pub fn get_notify_addr(&self, queue_idx: u16) -> u64
Get notify address for a queue Returns (notify_addr, queue_notify_offset)
Sourcepub fn notify_queue(&self, queue_idx: u16)
pub fn notify_queue(&self, queue_idx: u16)
Notify device about queue
Sourcepub fn setup_queue(
&self,
queue_idx: u16,
desc_addr: u64,
avail_addr: u64,
used_addr: u64,
queue_size: u16,
) -> Result<u64, VirtioInitError>
pub fn setup_queue( &self, queue_idx: u16, desc_addr: u64, avail_addr: u64, used_addr: u64, queue_size: u16, ) -> Result<u64, VirtioInitError>
Setup a virtqueue. Returns the notify address on success.
§Arguments
queue_idx: Queue index (0 for blk, 0/1 for net RX/TX)desc_addr: Physical address of descriptor tableavail_addr: Physical address of available ringused_addr: Physical address of used ringqueue_size: Number of descriptors
Sourcepub fn read_blk_capacity(&self) -> u64
pub fn read_blk_capacity(&self) -> u64
Read block device capacity (blk device specific)
Sourcepub fn read_blk_size(&self) -> u32
pub fn read_blk_size(&self) -> u32
Read block device sector size (blk device specific)
Trait Implementations§
Source§impl Clone for VirtioTransport
impl Clone for VirtioTransport
Source§fn clone(&self) -> VirtioTransport
fn clone(&self) -> VirtioTransport
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more