DeviceRegistersVolatileWideFieldAccess

Trait DeviceRegistersVolatileWideFieldAccess 

Source
pub trait DeviceRegistersVolatileWideFieldAccess<'a, A> {
    // Required methods
    fn queue_desc(self) -> WideVolatilePtr<'a, le32, A::Restricted>
       where A: RestrictAccess<WriteOnly>;
    fn queue_driver(self) -> WideVolatilePtr<'a, le32, A::Restricted>
       where A: RestrictAccess<WriteOnly>;
    fn queue_device(self) -> WideVolatilePtr<'a, le32, A::Restricted>
       where A: RestrictAccess<WriteOnly>;
    fn shm_len(self) -> WideVolatilePtr<'a, le32, A::Restricted>
       where A: RestrictAccess<ReadOnly>;
    fn shm_base(self) -> WideVolatilePtr<'a, le32, A::Restricted>
       where A: RestrictAccess<ReadOnly>;
}
Expand description

MMIO Device Registers

Required Methods§

Source

fn queue_desc(self) -> WideVolatilePtr<'a, le32, A::Restricted>

Virtual queue’s Descriptor Area 64 bit long physical address

Writing to these two registers (lower 32 bits of the address to QueueDescLow, higher 32 bits to QueueDescHigh) notifies the device about location of the Descriptor Area of the queue selected by writing to QueueSel register.

Source

fn queue_driver(self) -> WideVolatilePtr<'a, le32, A::Restricted>

Virtual queue’s Driver Area 64 bit long physical address

Writing to these two registers (lower 32 bits of the address to QueueDriverLow, higher 32 bits to QueueDriverHigh) notifies the device about location of the Driver Area of the queue selected by writing to QueueSel.

Source

fn queue_device(self) -> WideVolatilePtr<'a, le32, A::Restricted>

Virtual queue’s Device Area 64 bit long physical address

Writing to these two registers (lower 32 bits of the address to QueueDeviceLow, higher 32 bits to QueueDeviceHigh) notifies the device about location of the Device Area of the queue selected by writing to QueueSel.

Source

fn shm_len(self) -> WideVolatilePtr<'a, le32, A::Restricted>

Shared memory region 64 bit long length

These registers return the length of the shared memory region in bytes, as defined by the device for the region selected by the SHMSel register. The lower 32 bits of the length are read from SHMLenLow and the higher 32 bits from SHMLenHigh. Reading from a non-existent region (i.e. where the ID written to SHMSel is unused) results in a length of -1.

Source

fn shm_base(self) -> WideVolatilePtr<'a, le32, A::Restricted>

Shared memory region 64 bit long physical address

The driver reads these registers to discover the base address of the region in physical address space. This address is chosen by the device (or other part of the VMM). The lower 32 bits of the address are read from SHMBaseLow with the higher 32 bits from SHMBaseHigh. Reading from a non-existent region (i.e. where the ID written to SHMSel is unused) results in a base address of 0xffffffffffffffff.

Implementations on Foreign Types§

Source§

impl<'a, A> DeviceRegistersVolatileWideFieldAccess<'a, A> for VolatilePtr<'a, DeviceRegisters, A>

Implementors§