摘要
调整 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 是物理或连续的。
另请参阅
zx_vmo_create()
zx_vmo_get_size()
zx_vmo_get_stream_size()
zx_vmo_set_size()
zx_vmo_op_range()
zx_vmo_read()
zx_vmo_write()