Perform an operation on a range of a VMO.
#include <zircon/syscalls.h> zx_status_t zx_vmo_op_range(zx_handle_t handle, uint32_t op, uint64_t offset, uint64_t size, void* buffer, size_t buffer_size);
zx_vmo_op_range() performs cache and memory operations against pages held by the VMO.
offset byte offset specifying the starting location for op in the VMO's held memory.
size length, in bytes, to perform the operation on.
op the operation to perform:
buffer and buffer_size are currently unused.
ZX_VMO_OP_COMMIT - Commit size bytes worth of pages starting at byte offset for the VMO. More information can be found in the vm object documentation. Requires the ZX_RIGHT_WRITE right.
ZX_VMO_OP_DECOMMIT - Release a range of pages previously committed to the VMO from offset
to offset+size, which resets that range's bytes to 0. Requires the ZX_RIGHT_WRITE right.
This is only supported for vmos created from
zx_vmo_create() which do not have non-slice
children, and for slice children of such vmos. Provided range must be page aligned.
ZX_VMO_OP_ZERO_RANGE - Resets the range of bytes in the VMO from offset to offset+size to
0. This is semantically equivalent to writing 0's with
zx_vmo_write(), except that it is able to be done more
efficiently and save memory by de-duping to shared zero pages. Requires the ZX_RIGHT_WRITE right.
ZX_VMO_OP_LOCK - Presently unsupported.
ZX_VMO_OP_UNLOCK - Presently unsupported.
ZX_VMO_OP_CACHE_SYNC - Performs a cache sync operation. Requires the ZX_RIGHT_READ right.
ZX_VMO_OP_CACHE_INVALIDATE - Performs a cache invalidation operation. Requires the ZX_RIGHT_WRITE right.
ZX_VMO_OP_CACHE_CLEAN - Performs a cache clean operation. Requires the ZX_RIGHT_READ right.
ZX_VMO_OP_CACHE_CLEAN_INVALIDATE - Performs cache clean and invalidate operations together. Requires the ZX_RIGHT_READ right.
If op is ZX_VMO_OP_COMMIT, handle must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_WRITE.
If op is ZX_VMO_OP_DECOMMIT, handle must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_WRITE.
If op is ZX_VMO_OP_CACHE_SYNC, handle must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_READ.
If op is ZX_VMO_OP_CACHE_INVALIDATE, handle must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_WRITE.
If op is ZX_VMO_OP_CACHE_CLEAN, handle must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_READ.
If op is ZX_VMO_OP_CACHE_CLEAN_INVALIDATE, handle must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_READ.
zx_vmo_op_range() returns ZX_OK on success. In the event of failure, a negative error
value is returned.
ZX_ERR_BAD_HANDLE handle is not a valid handle.
ZX_ERR_OUT_OF_RANGE An invalid memory range specified by offset and size.
ZX_ERR_NO_MEMORY Allocations to commit pages for ZX_VMO_OP_COMMIT or ZX_VMO_OP_ZERO_RANGE failed.
ZX_ERR_WRONG_TYPE handle is not a VMO handle.
ZX_ERR_ACCESS_DENIED handle does not have sufficient rights to perform the operation.
ZX_ERR_INVALID_ARGS out is an invalid pointer, op is not a valid operation, size is zero and op is a cache operation, or op was ZX_VMO_OP_DECOMMIT and range was not page aligned.
ZX_ERR_NOT_SUPPORTED op was ZX_VMO_OP_LOCK or ZX_VMO_OP_UNLOCK, or op was ZX_VMO_OP_DECOMMIT and the underlying VMO does not allow decommiting.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-02-10.