摘要
調整 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_WRITE
和 ZX_RIGHT_RESIZE
。
傳回值
zx_vmo_set_size()
會在成功時傳回 ZX_OK
。如果失敗,系統會傳回負值的錯誤值。
錯誤
ZX_ERR_BAD_HANDLE
帳號代碼不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
帳號代碼並非 VMO 控制代碼。
ZX_ERR_ACCESS_DENIED
處理常式沒有 ZX_RIGHT_WRITE
或 ZX_RIGHT_RESIZE
權限。
ZX_ERR_UNAVAILABLE
VMO 並未使用 ZX_VMO_RESIZABLE
或 ZX_VMO_CHILD_RESIZABLE
建立。
ZX_ERR_OUT_OF_RANGE
要求的大小過大。
ZX_ERR_NO_MEMORY
因缺少系統記憶體而失敗。
ZX_ERR_BAD_STATE
要求的大小會捨棄固定的頁面。
另請參閱
zx_vmo_create()
zx_vmo_create_child()
zx_vmo_get_size()
zx_vmo_op_range()
zx_vmo_read()
zx_vmo_write()