blob: 2d8a44625cccc2ce290b2e27faa93b004a6dbedf [file] [log] [blame] [view]
<!--
Copyright 2023 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.
DO NOT EDIT. Generated from FIDL library zx by zither, a Fuchsia platform tool.
See //docs/reference/syscalls/README.md#documentation-generation for
regeneration instructions.
-->
# zx_pager_detach_vmo
## Summary
Detaches a vmo from a pager.
## Declaration
```c
#include <zircon/syscalls.h>
zx_status_t zx_pager_detach_vmo(zx_handle_t pager, zx_handle_t vmo);
```
## Description
Detaching *vmo* from *pager* causes the kernel to stop queuing page requests for the vmo. Subsequent
accesses that would have generated page requests will instead fail.
No new **ZX_PAGER_VMO_READ** and **ZX_PAGER_VMO_DIRTY** requests will be generated after detaching,
but some requests may still be in flight. The pager service is free to ignore these requests, as the
kernel will resume and fault the threads that generated these requests. The final request the pager
service will receive is a **ZX_PAGER_VMO_COMPLETE** request.
The kernel is free to evict clean pages from detached vmos, but will retain any dirty pages. Upon
receiving the **ZX_PAGER_VMO_COMPLETE** request, the pager service is expected to query these ranges
with [`zx_pager_query_dirty_ranges()`] and write them back with [`zx_pager_op_range()`]
**ZX_PAGER_OP_WRITEBACK_BEGIN** and **ZX_PAGER_OP_WRITEBACK_END**. Once they have been written back,
these pages will become clean again, so the kernel is free to evict them.
## Rights
*pager* must be of type **ZX_OBJ_TYPE_PAGER**.
*vmo* must be of type **ZX_OBJ_TYPE_VMO**.
## Return value
`zx_pager_detach_vmo()` returns ZX_OK on success, or one of the following error codes on failure.
## Errors
**ZX_ERR_BAD_HANDLE** *pager* or *vmo* is not a valid handle.
**ZX_ERR_WRONG_TYPE** *pager* is not a pager handle or *vmo* is not a vmo handle.
**ZX_ERR_INVALID_ARGS** *vmo* is not a vmo created from *pager*.
## See also
- [`zx_pager_create_vmo()`]
- [`zx_pager_op_range()`]
- [`zx_pager_query_dirty_ranges()`]
[`zx_pager_create_vmo()`]: pager_create_vmo.md
[`zx_pager_op_range()`]: pager_op_range.md
[`zx_pager_query_dirty_ranges()`]: pager_query_dirty_ranges.md