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

如要開始在訪客中執行作業,您必須使用 zx_vmar_map() 將 VMO 對應至 vmar_handle,且 vCPU 必須使用 zx_vcpu_create() 建立,然後使用 zx_vcpu_enter() 執行。

此外,VMO 應對應至 vmar_handle,以提供客體記憶體。

根據預設,系統會在帳號代碼 guest_handle 上設定下列權限:

ZX_RIGHT_TRANSFER - guest_handle 可透過管道轉移。

ZX_RIGHT_DUPLICATEguest_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_SYSTEM_HYPERVISOR_BASEZX_RSRC_KIND_SYSTEM 種類。

ZX_ERR_INVALID_ARGS guest_handlevmar_handle 是無效指標,或 options 非零。

ZX_ERR_NO_MEMORY 因記憶體不足而失敗。使用者空間無法以任何方式處理這個錯誤 (極可能) 錯誤。日後的建構作業不會再發生這個錯誤。

ZX_ERR_WRONG_TYPE 資源不是資源的控制代碼。

另請參閱