摘要
取消對應虛擬記憶體頁面。
宣告
#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
找不到要求的對應關係。