摘要
调整 VMO 对象的大小。
声明
#include <zircon/syscalls.h>
zx_status_t zx_vmo_set_size(zx_handle_t handle, uint64_t size);
说明
zx_vmo_set_size()
用于设置虚拟内存对象 (VMO) 的新大小。
大小将向上舍入到下一个页面大小边界。对 zx_vmo_get_size()
的后续调用将返回向上舍入后的大小。
VMO 的内容大小将设置为给定(未舍入)大小。将 zx_object_get_property()
与 ZX_PROP_VMO_CONTENT_SIZE
结合使用可读取 VMO 的内容大小。将 zx_object_set_property()
与 ZX_PROP_VMO_CONTENT_SIZE
结合使用即可设置 VMO 的内容大小,而无需实际调整 VMO 大小。
VMO 中给定大小与 VMO 结尾之间的数据(即下一页面边界)将被替换为零。
权限
handle 必须为 ZX_OBJ_TYPE_VMO
类型,且具有 ZX_RIGHT_WRITE
和 ZX_RIGHT_RESIZE
。
返回值
zx_vmo_set_size()
会在成功时返回 ZX_OK
。如果失败,则返回负的错误值。
错误
ZX_ERR_BAD_HANDLE
句柄不是有效的句柄。
ZX_ERR_WRONG_TYPE
句柄不是 VMO 句柄。
ZX_ERR_ACCESS_DENIED
句柄没有 ZX_RIGHT_WRITE
或 ZX_RIGHT_RESIZE
权限。
ZX_ERR_UNAVAILABLE
:未使用 ZX_VMO_RESIZABLE
或 ZX_VMO_CHILD_RESIZABLE
创建 VMO。
ZX_ERR_OUT_OF_RANGE
请求的大小过大。
ZX_ERR_NO_MEMORY
由于缺少系统内存而失败。
如果请求的尺寸为 ZX_ERR_BAD_STATE
,则会舍弃已固定的网页。
另请参阅
zx_vmo_create()
zx_vmo_create_child()
zx_vmo_get_size()
zx_vmo_op_range()
zx_vmo_read()
zx_vmo_write()