# 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](/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()`]: /reference/syscalls/bti_pin.md
[`zx_handle_close()`]: /reference/syscalls/handle_close.md
[`zx_pmt_unpin()`]: /reference/syscalls/pmt_unpin.md
