virtio_drivers::transport::pci::bus

Struct PciRoot

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

The root complex of a PCI bus.

Implementations§

Source§

impl PciRoot

Source

pub unsafe fn new(mmio_base: *mut u8, cam: Cam) -> Self

Wraps the PCI root complex with the given MMIO base address.

Panics if the base address is not aligned to a 4-byte boundary.

§Safety

mmio_base must be a valid pointer to an appropriately-mapped MMIO region of at least 16 MiB (if cam == Cam::MmioCam) or 256 MiB (if cam == Cam::Ecam). The pointer must be valid for the entire lifetime of the program (i.e. 'static), which implies that no Rust references may be used to access any of the memory region at any point.

Source

pub fn enumerate_bus(&self, bus: u8) -> BusDeviceIterator

Enumerates PCI devices on the given bus.

Source

pub fn get_status_command( &self, device_function: DeviceFunction, ) -> (Status, Command)

Reads the status and command registers of the given device function.

Source

pub fn set_command(&mut self, device_function: DeviceFunction, command: Command)

Sets the command register of the given device function.

Source

pub fn capabilities( &self, device_function: DeviceFunction, ) -> CapabilityIterator<'_>

Gets an iterator over the capabilities of the given device function.

Source

pub fn bars( &mut self, device_function: DeviceFunction, ) -> Result<[Option<BarInfo>; 6], PciError>

Returns information about all the given device function’s BARs.

Source

pub fn bar_info( &mut self, device_function: DeviceFunction, bar_index: u8, ) -> Result<BarInfo, PciError>

Gets information about the given BAR of the given device function.

Source

pub fn set_bar_32( &mut self, device_function: DeviceFunction, bar_index: u8, address: u32, )

Sets the address of the given 32-bit memory or I/O BAR of the given device function.

Source

pub fn set_bar_64( &mut self, device_function: DeviceFunction, bar_index: u8, address: u64, )

Sets the address of the given 64-bit memory BAR of the given device function.

Trait Implementations§

Source§

impl Debug for PciRoot

Source§

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

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

impl Send for PciRoot

Source§

impl Sync for PciRoot

Auto Trait Implementations§

§

impl Freeze for PciRoot

§

impl RefUnwindSafe for PciRoot

§

impl Unpin for PciRoot

§

impl UnwindSafe for PciRoot

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.