zx_vmo_set_size

摘要

調整 VMO 物件大小。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_vmo_set_size(zx_handle_t handle, uint64_t size);

說明

zx_vmo_set_size() 可設定虛擬記憶體物件 (VMO) 的新大小。

大小會無條件進位至下一頁大小邊界。後續呼叫 zx_vmo_get_size() 將傳回四捨五入的大小。

VMO 的內容大小會設為指定的 (無捨入) 大小。將 zx_object_get_property()ZX_PROP_VMO_CONTENT_SIZE 搭配使用,以讀取 VMO 的內容大小。將 zx_object_set_property()ZX_PROP_VMO_CONTENT_SIZE 搭配使用,即可設定 VMO 的內容大小,而不需要實際調整 VMO 大小。

系統會將指定大小和 VMO 結尾之間的 VMO 資料 (即下一頁邊界) 覆寫為零。

權限

handle 必須是 ZX_OBJ_TYPE_VMO 類型,且具有 ZX_RIGHT_WRITEZX_RIGHT_RESIZE

傳回值

zx_vmo_set_size() 會在成功時傳回 ZX_OK。如果失敗,系統會傳回負值的錯誤值。

錯誤

ZX_ERR_BAD_HANDLE 帳號代碼不是有效的帳號代碼。

ZX_ERR_WRONG_TYPE 帳號代碼並非 VMO 控制代碼。

ZX_ERR_ACCESS_DENIED 處理常式沒有 ZX_RIGHT_WRITEZX_RIGHT_RESIZE 權限。

ZX_ERR_UNAVAILABLE VMO 並未使用 ZX_VMO_RESIZABLEZX_VMO_CHILD_RESIZABLE 建立。

ZX_ERR_OUT_OF_RANGE 要求的大小過大。

ZX_ERR_NO_MEMORY 因缺少系統記憶體而失敗。

ZX_ERR_BAD_STATE 要求的大小會捨棄固定的頁面。

另請參閱