zx_guest_create

摘要

建立訪客。

宣告

#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_TRANSFERguest_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_handlevmar_handle 是無效指標, 或 options 為非零。

ZX_ERR_NO_MEMORY 因記憶體不足而失敗。 使用者空間無法妥善處理這種 (異常) 錯誤。 在日後的版本中不會再發生這個錯誤。

ZX_ERR_WRONG_TYPE 資源並非資源的控制代碼。

另請參閱