MmioCam

Struct MmioCam 

Source
pub struct MmioCam<'a> { /* private fields */ }
Expand description

ConfigurationAccess implementation for memory-mapped access to a PCI root complex, via either a 16 MiB region for the PCI Configuration Access Mechanism or a 256 MiB region for the PCIe Enhanced Configuration Access Mechanism.

Implementations§

Source§

impl MmioCam<'_>

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 lifetime 'a, which implies that no Rust references may be used to access any of the memory region at least during that lifetime.

Trait Implementations§

Source§

impl ConfigurationAccess for MmioCam<'_>

Source§

fn read_word(&self, device_function: DeviceFunction, register_offset: u8) -> u32

Reads 4 bytes from the configuration space.
Source§

fn write_word( &mut self, device_function: DeviceFunction, register_offset: u8, data: u32, )

Writes 4 bytes to the configuration space.
Source§

unsafe fn unsafe_clone(&self) -> Self

Makes a clone of the ConfigurationAccess, accessing the same PCI bus. Read more
Source§

impl Sync for MmioCam<'_>

Auto Trait Implementations§

§

impl<'a> Freeze for MmioCam<'a>

§

impl<'a> RefUnwindSafe for MmioCam<'a>

§

impl<'a> Send for MmioCam<'a>

§

impl<'a> Unpin for MmioCam<'a>

§

impl<'a> UnwindSafe for MmioCam<'a>

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.