Struct driver_virtio::pci::PciRoot
pub struct PciRoot { /* private fields */ }
Expand description
The root complex of a PCI bus.
Implementations§
§impl PciRoot
impl PciRoot
pub unsafe fn new(mmio_base: *mut u8, cam: Cam) -> 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 ⓘ
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)
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)
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<'_> ⓘ
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>
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
)
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
)
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.