摘要
取消映射虚拟内存页面。
声明
#include <zircon/syscalls.h>
zx_status_t zx_vmar_unmap(zx_handle_t handle, zx_vaddr_t addr, size_t len);
说明
zx_vmar_unmap()
取消映射所有 VMO 映射,并销毁(就像已调用 zx_vmar_destroy()
一样)绝对范围内(包括 addr 且仅在 addr + len
之前结束)的所有子区域。范围内的任何子区域都必须完全在此范围内(即,部分重叠就是错误)。如果某个映射仅在该范围内的一部分,则映射会被拆分,并且所请求的部分不会被映射。
len 必须页面对齐。
权限
TODO(https://fxbug.dev/42107318)
返回值
zx_vmar_unmap()
会在成功时返回 ZX_OK
。
错误
ZX_ERR_BAD_HANDLE
句柄不是有效句柄。
ZX_ERR_WRONG_TYPE
句柄不是 VMAR 句柄。
ZX_ERR_INVALID_ARGS
addr 未与页面对齐,len 为 0 或未与页面对齐,或者请求的范围与子区域部分重叠,或者请求的范围与子区域重叠,并且标识名不包含 ZX_RIGHT_OP_CHILDREN
。
ZX_ERR_BAD_STATE
句柄是指销毁的句柄。
ZX_ERR_NOT_FOUND
找不到请求的映射。