1# Pinned Memory Token
2
3## NAME
4
5pinned_memory_token - Representation of a device DMA grant
6
7## SYNOPSIS
8
9Pinned Memory Tokens (PMTs) represent an outstanding access grant to a device
10for performing DMA.
11
12## DESCRIPTION
13
14PMTs are obtained by [pinning memory with a BTI object](../syscalls/bti_pin.md).
15It is valid for the device associated with the BTI to access the memory represented
16by the PMT for as long as the PMT object is around.  When the PMT object is
17destroyed, either via **zx_handle_close**(), **zx_pmt_unpin**(), or process
18termination, access to the represented memory becomes illegal (this is
19enforced by hardware on systems with the capability to do so, such as IOMMUs).
20
21If a PMT object is destroyed by means other than **zx_pmt_unpin**(), the
22underlying memory is *quarantined*.  See
23[bus_transaction_initiator](bus_transaction_initiator.md) for more details.
24
25## SEE ALSO
26
27+ [bus_transaction_initiator](bus_transaction_initiator.md) - Bus Transaction Initiators
28
29## SYSCALLS
30
31+ [bti_pin](../syscalls/bti_pin.md) - pin memory and grant access to it to the BTI
32+ [pmt_unpin](../syscalls/pmt_unpin.md) - revoke access and unpin memory
33