Struct driver_virtio::pci::PciRoot

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

The root complex of a PCI bus.

Implementations§

§

impl PciRoot

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

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.

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

Enumerates PCI devices on the given bus.

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

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

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

Sets the command register of the given device function.

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

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

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.

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.

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§

§

impl Debug for PciRoot

§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

source§

fn into(self) -> U

Calls U::from(self).

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

source§

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

§

type Error = Infallible

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

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

Performs the conversion.
source§

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

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

Performs the conversion.