|  | # Pinned Memory Token | 
|  |  | 
|  | ## NAME | 
|  |  | 
|  | pinned_memory_token - Representation of a device DMA grant | 
|  |  | 
|  | ## SYNOPSIS | 
|  |  | 
|  | Pinned Memory Tokens (PMTs) represent an outstanding access grant to a device | 
|  | for performing DMA. | 
|  |  | 
|  | ## DESCRIPTION | 
|  |  | 
|  | PMTs are obtained by [pinning memory with a BTI object](/docs/reference/syscalls/bti_pin.md). | 
|  | 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](bus_transaction_initiator.md) for more details. | 
|  |  | 
|  | ## SEE ALSO | 
|  |  | 
|  | - [bus_transaction_initiator](bus_transaction_initiator.md) - Bus Transaction Initiators | 
|  |  | 
|  | ## SYSCALLS | 
|  |  | 
|  | - [`zx_bti_pin()`] - pin memory and grant access to it to the BTI | 
|  | - [`zx_pmt_unpin()`] - revoke access and unpin memory | 
|  |  | 
|  | [`zx_bti_pin()`]: /docs/reference/syscalls/bti_pin.md | 
|  | [`zx_handle_close()`]: /docs/reference/syscalls/handle_close.md | 
|  | [`zx_pmt_unpin()`]: /docs/reference/syscalls/pmt_unpin.md |