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