PciTransport

Struct PciTransport 

Source
pub struct PciTransport { /* private fields */ }
Expand description

PCI transport for VirtIO.

Ref: 4.1 Virtio Over PCI Bus

Implementations§

Source§

impl PciTransport

Source

pub fn new<H: Hal, C: ConfigurationAccess>( root: &mut PciRoot<C>, 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

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for PciTransport

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<PciTransport> for SomeTransport<'_>

Source§

fn from(pci: PciTransport) -> Self

Converts to this type from the input type.
Source§

impl Transport for PciTransport

Source§

fn device_type(&self) -> DeviceType

Gets the device type.
Source§

fn read_device_features(&mut self) -> u64

Reads device features.
Source§

fn write_driver_features(&mut self, driver_features: u64)

Writes device features.
Source§

fn max_queue_size(&mut self, queue: u16) -> u32

Gets the max size of the given queue.
Source§

fn notify(&mut self, queue: u16)

Notifies the given queue on the device.
Source§

fn get_status(&self) -> DeviceStatus

Gets the device status.
Source§

fn set_status(&mut self, status: DeviceStatus)

Sets the device status.
Source§

fn set_guest_page_size(&mut self, _guest_page_size: u32)

Sets the guest page size.
Source§

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, )

Sets up the given queue.
Source§

fn queue_unset(&mut self, _queue: u16)

Disables and resets the given queue.
Source§

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

Acknowledges an interrupt. Read more
Source§

fn read_config_generation(&self) -> u32

Reads the configuration space generation.
Source§

fn read_config_space<T: FromBytes + IntoBytes>( &self, offset: usize, ) -> Result<T, Error>

Reads a value from the device config space.
Source§

fn write_config_space<T: IntoBytes + Immutable>( &mut self, offset: usize, value: T, ) -> Result<(), Error>

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

Begins initializing the device. Read more
Source§

fn finish_init(&mut self)

Finishes initializing the device.
Source§

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.
Source§

impl Send for PciTransport

Source§

impl Sync for PciTransport

Auto Trait Implementations§

§

impl Freeze for PciTransport

§

impl RefUnwindSafe for PciTransport

§

impl Unpin for PciTransport

§

impl UnwindSafe for PciTransport

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.