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