class MmioBuffer

Defined at line 34 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

MmioBuffer represents and manages a mapped MMIO region.

Public Methods

void MmioBuffer (const MmioBuffer & )

Defined at line 40 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

MmioBuffer & operator= (const MmioBuffer & )

Defined at line 41 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

MmioView View (zx_off_t off)

Provides a slice view into the mmio.

The returned slice object must not outlive this object.

Defined at line 51 of file ../../sdk/lib/driver/mmio/cpp/mmio-view.h

MmioView View (zx_off_t off, size_t size)

Defined at line 53 of file ../../sdk/lib/driver/mmio/cpp/mmio-view.h

void MmioBuffer (zx::vmo vmo, MMIO_PTR void * vaddr, zx_off_t offset, size_t size, const MmioBufferOps * ops, const void * ctx)

Adopts an existing mapping of |vmo| at |vaddr|. The buffer takes ownership of the mapping and

unmaps it from the root VMAR on destruction or reset(). If |vmo| is invalid, the buffer does

not own the mapping and never unmaps it. When |ops| is null, the default ops are used and |ctx|

is ignored.

Defined at line 54 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void ~MmioBuffer ()

Defined at line 65 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void MmioBuffer (MmioBuffer && other)

Defined at line 67 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

MmioBuffer & operator= (MmioBuffer && other)

Defined at line 69 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

zx::result<MmioBuffer> Create (zx_off_t offset, size_t size, zx::vmo vmo, uint32_t cache_policy)

Maps |size| bytes of |vmo| starting at |offset| into the root VMAR. |offset| is the offset from

the beginning of |vmo| where the mmio region begins. |size| specifies the size of the mmio

region. |offset| + |size| must be less than or equal to the size of |vmo|.

Defined at line 80 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void reset ()

Defined at line 121 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

MMIO_PTR void * get ()

Defined at line 134 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

zx_off_t get_offset ()

Defined at line 135 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

size_t get_size ()

Defined at line 136 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

zx::unowned_vmo get_vmo ()

Defined at line 137 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

const MmioBufferOps * GetDefaultOps ()

Returns the default MmioBufferOps instance.

Defined at line 144 of file ../../sdk/lib/driver/mmio/cpp/mmio-internal.h

zx_status_t Pin (const zx::bti & bti, std::optional<MmioPinnedBuffer> * pinned_buffer)

Defined at line 144 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

const MmioBufferOps * GetUnsynchronizedOps ()

Returns an MmioBufferOps table whose writes omit the trailing hardware memory barrier, for

drivers that order accesses themselves.

Defined at line 145 of file ../../sdk/lib/driver/mmio/cpp/mmio-internal.h

zx::result<MmioPinnedBuffer> Pin (const zx::bti & bti)

Defined at line 152 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

uint32_t ReadMasked32 (uint32_t mask, zx_off_t offs)

Defined at line 171 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void ModifyBits32 (uint32_t bits, uint32_t mask, zx_off_t offs)

Defined at line 175 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void ModifyBits32 (uint32_t val, uint32_t start, uint32_t width, zx_off_t offs)

Defined at line 179 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void SetBits32 (uint32_t bits, zx_off_t offs)

Defined at line 183 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void ClearBits32 (uint32_t bits, zx_off_t offs)

Defined at line 185 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void CopyFrom32 (const MmioBuffer & source, zx_off_t source_offs, zx_off_t dest_offs, size_t count)

Defined at line 187 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
T Read (zx_off_t offs)

Defined at line 193 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
T ReadMasked (T mask, zx_off_t offs)

Defined at line 208 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void CopyFrom (const MmioBuffer & source, zx_off_t source_offs, zx_off_t dest_offs, size_t count)

Defined at line 213 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void Write (T val, zx_off_t offs)

Defined at line 224 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void ModifyBits (T bits, T mask, zx_off_t offs)

Defined at line 239 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void SetBits (T bits, zx_off_t offs)

Defined at line 245 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void ClearBits (T bits, zx_off_t offs)

Defined at line 250 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
T GetBits (size_t shift, size_t count, zx_off_t offs)

Defined at line 255 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
T GetBit (size_t shift, zx_off_t offs)

Defined at line 262 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void ModifyBits (T bits, size_t shift, size_t count, zx_off_t offs)

Defined at line 267 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void ModifyBit (bool val, size_t shift, zx_off_t offs)

Defined at line 274 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void SetBit (size_t shift, zx_off_t offs)

Defined at line 279 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

template <typename T>
void ClearBit (size_t shift, zx_off_t offs)

Defined at line 284 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

uint8_t Read8 (zx_off_t offs)

Defined at line 288 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

uint16_t Read16 (zx_off_t offs)

Defined at line 289 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

uint32_t Read32 (zx_off_t offs)

Defined at line 290 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

uint64_t Read64 (zx_off_t offs)

Defined at line 291 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void ReadBuffer (zx_off_t offs, void * buffer, size_t size)

Read `size` bytes from the MmioBuffer into `buffer`. There are no access width guarantees

when using this operation and must only be used with devices where arbitrary access widths are

supported.

Defined at line 296 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void Write8 (uint8_t val, zx_off_t offs)

Defined at line 300 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void Write16 (uint16_t val, zx_off_t offs)

Defined at line 301 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void Write32 (uint32_t val, zx_off_t offs)

Defined at line 302 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void Write64 (uint64_t val, zx_off_t offs)

Defined at line 303 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

void WriteBuffer (zx_off_t offs, const void * buffer, size_t size)

Write `size` bytes from `buffer` into the MmioBuffer. There are no access width guarantees

when using this operation and must only be used with devices where arbitrary access widths are

supported.

Defined at line 308 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

Protected Methods

const MmioBufferOps * ops ()

Defined at line 313 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

const void * ctx ()

Defined at line 314 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

zx::unowned_vmo & unowned_vmo ()

Defined at line 315 of file ../../sdk/lib/driver/mmio/cpp/mmio-buffer.h

Friends

MmioBuffer MmioBuffer (MmioBuffer && buffer, const MmioBufferOps * ops, const void * ctx)
class MmioView