pinned_memory_token - Representation of a device DMA grant
Pinned Memory Tokens (PMTs) represent an outstanding access grant to a device for performing DMA.
PMTs are obtained by pinning memory with a BTI object. It is valid for the device associated with the BTI to access the memory represented by the PMT for as long as the PMT object is around. When the PMT object is destroyed, either via zx_handle_close()
, zx_pmt_unpin()
, or process termination, access to the represented memory becomes illegal (this is enforced by hardware on systems with the capability to do so, such as IOMMUs).
If a PMT object is destroyed by means other than zx_pmt_unpin()
, the underlying memory is quarantined. See bus_transaction_initiator for more details.
zx_bti_pin()
- pin memory and grant access to it to the BTIzx_pmt_unpin()
- revoke access and unpin memory