virtio_drivers::transport::pci

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>( 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

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

Acknowledges an interrupt. Read more
Source§

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

Begins initializing the device. Read more
Source§

fn finish_init(&mut self)

Finishes initializing the device.
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.