Struct OwningPciRegion

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

This is “owning” in the sense that it doesn’t borrow the PciDevice it came from.

You can use the read and write methods to access the region. This should always work, but may not be the most efficient method to access it. If the region is “mappable”, consider mapping it into memory using OwningPciRegion::map and using volatile memory accesses.

For instance, BARs can be I/O Space BARs or Memory Space BARs. In either case, you can access them through the PciRegion methods. In addition, if a BAR is a Memory Space BAR, you can map it, which gives you another type implementing PciRegion, but accesses through it should be more efficient. You can also obtain a *const u8 or *mut u8 from that second PciRegion and use that directly.

Implementations§

Source§

impl OwningPciRegion

Source

pub fn is_mappable(&self) -> bool

Whether the region can be memory-mapped.

If false, OwningPciRegion::map will always fail.

Source

pub fn owning_subregion(&self, range: impl RangeBounds<u64>) -> OwningPciRegion

Like PciSubregion’s similar method, but returns an “owning” subregion.

Source

pub fn map( &self, range: impl RangeBounds<u64>, permissions: Permissions, ) -> Result<MappedOwningPciRegion>

Memory-map some range of the region into the current process’ address space.

Trait Implementations§

Source§

impl<'a> AsPciSubregion<'a> for &'a OwningPciRegion

Source§

fn as_subregion(&self) -> PciSubregion<'a>

Returns a PciSubregion corresponding to self.
Source§

fn subregion(&self, range: impl RangeBounds<u64>) -> PciSubregion<'a>

Returns a PciSubregion corresponding to a range of self.
Source§

impl Debug for OwningPciRegion

Source§

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

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

impl PciRegion for OwningPciRegion

Source§

fn len(&self) -> u64

The length of the region in bytes.
Source§

fn permissions(&self) -> Permissions

Whether the region may be read, written, or both.
Source§

fn as_ptr(&self) -> Option<*const u8>

Returns a const pointer to the beginning of the PciRegion. Read more
Source§

fn as_mut_ptr(&self) -> Option<*mut u8>

Returns a mut pointer to the beginning of the PciRegion. Read more
Source§

fn read_bytes(&self, offset: u64, buffer: &mut [u8]) -> Result<()>

Read from a contiguous range of the region into a byte buffer. Read more
Source§

fn read_u8(&self, offset: u64) -> Result<u8>

Read an u8 at the given byte offset from the beginning of the PciRegion. Read more
Source§

fn write_u8(&self, offset: u64, value: u8) -> Result<()>

Write an u8 at the given byte offset from the beginning of the PciRegion. Read more
Source§

fn read_le_u16(&self, offset: u64) -> Result<u16>

Read a little-endian u16 at the given byte offset from the beginning of the PciRegion. Read more
Source§

fn write_le_u16(&self, offset: u64, value: u16) -> Result<()>

Write a little-endian u16 at the given byte offset from the beginning of the PciRegion. Read more
Source§

fn read_le_u32(&self, offset: u64) -> Result<u32>

Read a little-endian u32 at the given byte offset from the beginning of the PciRegion. Read more
Source§

fn write_le_u32(&self, offset: u64, value: u32) -> Result<()>

Write a little-endian u32 at the given byte offset from the beginning of the PciRegion. 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>,

Source§

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

Source§

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.