摘要
建立訪客。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_guest_create(zx_handle_t resource,
uint32_t options,
zx_handle_t* guest_handle,
zx_handle_t* vmar_handle);
說明
zx_guest_create()
會建立訪客,也就是可執行的虛擬機器
,其中 vmar_handle 代表實際地址
共用空間
如要建立訪客,請讓 ZX_RSRC_KIND_SYSTEM
的資源使用,其中包含
必須提供 ZX_RSRC_SYSTEM_HYPERVISOR_BASE
。
VMO 必須對應至
vmar_handle 使用 zx_vmar_map()
,且 vCPU 必須以
zx_vcpu_create()
,然後使用 zx_vcpu_enter()
執行。
此外,VMO 必須對應至 vmar_handle,才能為訪客提供 實體記憶體
根據預設,帳號代碼 guest_handle 將設定下列權限:
ZX_RIGHT_TRANSFER
— guest_handle 可透過管道轉移。
ZX_RIGHT_DUPLICATE
- guest_handle 可能會重複。
ZX_RIGHT_WRITE
- 可使用 zx_guest_set_trap()
設定陷阱。
ZX_RIGHT_MANAGE_THREAD
:可使用 zx_vcpu_create()
建立 vCPU。
請參閱 zx_vmo_create()
,瞭解 vmar_handle 適用的權利組合。
權限
resource 必須包含有基準的 ZX_RSRC_KIND_SYSTEM
種類資源
ZX_RSRC_SYSTEM_HYPERVISOR_BASE
。
傳回值
zx_guest_create()
會在成功時傳回 ZX_OK
。失敗時,錯誤值為
。
錯誤
ZX_ERR_NOT_SUPPORTED
裝置不支援管理程序。
ZX_ERR_ACCESS_DENIED
資源不符合 ZX_RSRC_KIND_SYSTEM
種類,且
基本 ZX_RSRC_SYSTEM_HYPERVISOR_BASE
。
ZX_ERR_INVALID_ARGS
guest_handle 或 vmar_handle 是無效指標,
或 options 為非零。
ZX_ERR_NO_MEMORY
因記憶體不足而失敗。
使用者空間無法妥善處理這種 (異常) 錯誤。
在日後的版本中不會再發生這個錯誤。
ZX_ERR_WRONG_TYPE
資源並非資源的控制代碼。
另請參閱
zx_guest_set_trap()
zx_vcpu_create()
zx_vcpu_enter()
zx_vcpu_interrupt()
zx_vcpu_kick()
zx_vcpu_read_state()
zx_vcpu_write_state()
zx_vmar_map()
zx_vmo_create()