zxvmo_set_size

摘要

调整 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_WRITEZX_RIGHT_RESIZE

返回值

zx_vmo_set_size() 会在成功时返回 ZX_OK。如果失败,则返回负的错误值。

错误

ZX_ERR_BAD_HANDLE 句柄不是有效的句柄。

ZX_ERR_WRONG_TYPE 句柄不是 VMO 句柄。

ZX_ERR_ACCESS_DENIED 句柄没有 ZX_RIGHT_WRITEZX_RIGHT_RESIZE 权限。

ZX_ERR_UNAVAILABLE:未使用 ZX_VMO_RESIZABLEZX_VMO_CHILD_RESIZABLE 创建 VMO。

ZX_ERR_OUT_OF_RANGE请求的大小过大。

ZX_ERR_NO_MEMORY 由于缺少系统内存而失败。

如果请求的尺寸为 ZX_ERR_BAD_STATE,则会舍弃已固定的网页。

另请参阅