zx_vmo_set_stream_size

摘要

调整 VMO 对象的流大小。

声明

#include <zircon/syscalls.h>

zx_status_t zx_vmo_set_stream_size(zx_handle_t handle, uint64_t size);

说明

zx_vmo_set_stream_size() 会更改虚拟内存对象 (VMO) 的流大小。

与 VMO 大小不同,数据流大小不会向上舍入到下一个页面大小边界,因此数据流大小不一定与页面对齐。您可以更改不可调整大小的 VMO 的流大小。无法使用此函数更改 VMO 大小,但可以使用 zx_vmo_set_size() 更改 VMO 的大小。

增加数据流大小后,从原始(较小)数据流大小到 VMO 末尾的范围会设为零。

缩减数据流大小后,新(较小)数据流大小与 VMO 结束之间的范围会设为零。

如果 VMO 中存在这些范围内的任何现有数据,则该数据将被此操作覆盖。

权限

handle 必须为 ZX_OBJ_TYPE_VMO 类型且具有 ZX_RIGHT_WRITE

返回值

zx_vmo_set_stream_size() 会在成功时返回 ZX_OK。如果失败,系统会返回负错误值。

错误

ZX_ERR_BAD_HANDLE handle 不是有效的 handle。

ZX_ERR_WRONG_TYPE handle 不是 VMO handle。

ZX_ERR_ACCESS_DENIED handle 没有 ZX_RIGHT_WRITE 权限。

ZX_ERR_OUT_OF_RANGE 请求的大小过大,或数据流大小大于 VMO 大小。

ZX_ERR_NO_MEMORY 因系统内存不足而失败。

ZX_ERR_NOT_SUPPORTED VMO 是物理或连续的。

另请参阅