pci_types

Struct PciHeader

Source
pub struct PciHeader(/* private fields */);
Expand description

Every PCI configuration region starts with a header made up of two parts:

  • a predefined region that identify the function (bytes 0x00..0x10)
  • a device-dependent region that depends on the Header Type field

The predefined region is of the form:

    32                            16                              0
     +-----------------------------+------------------------------+
     |       Device ID             |       Vendor ID              | 0x00
     |                             |                              |
     +-----------------------------+------------------------------+
     |         Status              |       Command                | 0x04
     |                             |                              |
     +-----------------------------+---------------+--------------+
     |               Class Code                    |   Revision   | 0x08
     |                                             |      ID      |
     +--------------+--------------+---------------+--------------+
     |     BIST     |    Header    |    Latency    |  Cacheline   | 0x0c
     |              |     type     |     timer     |    size      |
     +--------------+--------------+---------------+--------------+

Implementations§

Source§

impl PciHeader

Source

pub fn new(address: PciAddress) -> PciHeader

Source

pub fn address(&self) -> PciAddress

Source

pub fn id(&self, access: impl ConfigRegionAccess) -> (VendorId, DeviceId)

Source

pub fn header_type(&self, access: impl ConfigRegionAccess) -> HeaderType

Source

pub fn has_multiple_functions(&self, access: impl ConfigRegionAccess) -> bool

Source

pub fn revision_and_class( &self, access: impl ConfigRegionAccess, ) -> (DeviceRevision, BaseClass, SubClass, Interface)

Source

pub fn status(&self, access: impl ConfigRegionAccess) -> StatusRegister

Source

pub fn command(&self, access: impl ConfigRegionAccess) -> CommandRegister

Source

pub fn update_command<F>(&mut self, access: impl ConfigRegionAccess, f: F)

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.