Resize a VMO object.
#include <zircon/syscalls.h> zx_status_t zx_vmo_set_size(zx_handle_t handle, uint64_t size);
zx_vmo_set_size()
sets the new size of a VMO object.
The size will be rounded up to the next page size boundary. Subsequent calls to zx_vmo_get_size()
will return the rounded up size.
The content size of the VMO will be set to the given (unrounded) size. Use zx_object_get_property()
with ZX_PROP_VMO_CONTENT_SIZE to read the content size of the VMO. Use zx_object_set_property()
with ZX_PROP_VMO_CONTENT_SIZE to set the content size of the VMO without actually resizing the VMO.
The data in the VMO between the given size and the end of the VMO (i.e., the next page boundary) will be overritten with zeros.
handle must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_WRITE.
zx_vmo_set_size()
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_WRONG_TYPE handle is not a VMO handle.
ZX_ERR_ACCESS_DENIED handle does not have the ZX_RIGHT_WRITE right.
ZX_ERR_UNAVAILABLE The VMO was not created with ZX_VMO_RESIZABLE or ZX_VMO_CHILD_RESIZABLE.
ZX_ERR_OUT_OF_RANGE Requested size is too large.
ZX_ERR_NO_MEMORY Failure due to lack of system memory.
ZX_ERR_BAD_STATE Requested size would discard pinned pages.