摘要
建立 VM 物件。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_vmo_create(uint64_t size, uint32_t options, zx_handle_t* out);
說明
zx_vmo_create()
會建立新的零填入虛擬記憶體
物件 (VMO),代表將 0 至 YAML 的容器
作業系統管理的記憶體 size 位元組。
VMO 的大小會四捨五入至下一個系統頁面大小邊界。
(由 zx_system_get_page_size()
回報)。使用 zx_vmo_get_size()
:
會傳回 VMO 目前的大小
VMO 的內容大小將初始化為指定 (未四捨五入) 的大小。
將 zx_object_get_property()
與 ZX_PROP_VMO_CONTENT_SIZE
搭配使用,即可閱讀
VMO 的內容大小使用 zx_object_set_property()
搭配
ZX_PROP_VMO_CONTENT_SIZE
用來設定 VMO 的內容大小,但沒有
但確實調整 VMO 大小
成功會傳回一個控點,以所要求的 大小
根據預設,帳號代碼將設定下列權限:
ZX_RIGHT_DUPLICATE
- 帳號代碼可能重複。ZX_RIGHT_TRANSFER
- 帳號代碼可轉移至其他程序。ZX_RIGHT_READ
- 可能會讀取或對應具有讀取權限。ZX_RIGHT_WRITE
- 可透過寫入權限寫入或對應。ZX_RIGHT_MAP
- 可對應。ZX_RIGHT_GET_PROPERTY
- 可以使用zx_object_get_property()
取得屬性。ZX_RIGHT_SET_PROPERTY
- 可使用zx_object_set_property()
設定屬性。ZX_RIGHT_RESIZE
- 可調整大小。只有在已指定ZX_VMO_RESIZABLE
選項時才設定。
options 欄位可以為 0 或合併使用:
ZX_VMO_RESIZABLE
建立可變更大小的 VMO。無法調整大小的 VMO 的子項可以 調整大小ZX_VMO_DISCARDABLE
用於建立 VMO,供核心捨棄記憶體中的頁面 壓力。將zx_vmo_op_range()
與ZX_VMO_OP_LOCK
搭配使用,即可在以下時間點鎖定可捨棄的 VMO: 使用,並在完成時解鎖ZX_VMO_OP_UNLOCK
,使其符合回收資格,做法如下: 與核心部分相同新建立的可捨棄 VMO 初始已解鎖。ZX_VMO_UNBOUNDED
建立 VMO 並初始化為最大尺寸。不可以是 搭配ZX_VMO_RESIZABLE
使用。大小引數只會設定串流大小。
ZX_VMO_ZERO_CHILDREN
信號正在新建的 VMO 上。這會變成
每當 VMO 的子項建立時就會閒置,並在
已刪除所有子項,這些子項沒有對應的對應地址
聊天室存在。
權限
呼叫端工作政策必須允許 ZX_POL_NEW_VMO
。
傳回值
zx_vmo_create()
會在成功時傳回 ZX_OK
。活動
失敗時,系統會傳回負錯誤值。
錯誤
ZX_ERR_INVALID_ARGS
out 是無效的指標或 NULL,options 包含不支援的指標
多個標記組合
ZX_ERR_NO_MEMORY
因記憶體不足而失敗。
使用者空間無法妥善處理這種 (異常) 錯誤。
在日後的版本中不會再發生這個錯誤。
ZX_ERR_OUT_OF_RANGE
要求的大小上限太大。
另請參閱
zx_system_get_page_size()
zx_vmar_map()
zx_vmo_create_child()
zx_vmo_get_size()
zx_vmo_op_range()
zx_vmo_read()
zx_vmo_replace_as_executable()
zx_vmo_set_size()
zx_vmo_write()