| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library zx; |
| |
| @transport("Syscall") |
| closed protocol Pmt { |
| // TODO(https://fxbug.dev/42107929): handle ZX_OBJ_TYPE_PMT; No rights required? |
| /// ## Summary |
| /// |
| /// Unpin pages and revoke device access to them. |
| /// |
| /// ## Declaration |
| /// |
| /// ```c |
| /// #include <zircon/syscalls.h> |
| /// |
| /// zx_status_t zx_pmt_unpin(zx_handle_t handle); |
| /// ``` |
| /// |
| /// ## Description |
| /// |
| /// `zx_pmt_unpin()` unpins pages that were previously pinned by [`zx_bti_pin()`], |
| /// and revokes the access that was granted by the pin call. |
| /// |
| /// Always consumes *handle*. It is invalid to use *handle* afterwards, including |
| /// to call [`zx_handle_close()`] on it. |
| /// |
| /// ## Rights |
| /// |
| /// TODO(https://fxbug.dev/42107318) |
| /// |
| /// ## Return value |
| /// |
| /// On success, `zx_pmt_unpin()` returns `ZX_OK`. |
| /// In the event of failure, a negative error value is returned. |
| /// |
| /// ## Errors |
| /// |
| /// `ZX_ERR_BAD_HANDLE` *handle* is not a valid handle. |
| /// |
| /// `ZX_ERR_WRONG_TYPE` *handle* is not a PMT handle. |
| /// |
| /// ## See also |
| /// |
| /// - [`zx_bti_create()`] |
| /// - [`zx_bti_pin()`] |
| /// - [`zx_bti_release_quarantine()`] |
| /// |
| /// [`zx_bti_create()`]: bti_create.md |
| /// [`zx_bti_pin()`]: bti_pin.md |
| /// [`zx_bti_release_quarantine()`]: bti_release_quarantine.md |
| /// [`zx_handle_close()`]: handle_close.md |
| strict Unpin(resource struct { |
| @release |
| handle Handle:PMT; |
| }) -> () error Status; |
| }; |