zx_vcpu_create

摘要

建立 vCPU。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_vcpu_create(zx_handle_t guest,
                           uint32_t options,
                           zx_vaddr_t entry,
                           zx_handle_t* out);

說明

zx_vcpu_create() 會在訪客內建立 vCPU,以便在虛擬機器中執行。每位訪客可能會建立一或多個 vCPU,其中 vCPU 數量不必與機器上的實體 CPU 數量相符。

entry 是指示指標,用於指出在 VCPU 訪客實體記憶體執行作業中的啟動位置。

out 會繫結至建立該執行緒的執行緒,且所有在其上運作的系統呼叫都必須從相同的執行緒呼叫 (zx_vcpu_interrupt() 除外)。

一個執行緒中一次只能有一個 vCPU。執行緒關閉現有的 vCPU 後,就可以建立另一個 vCPU。

N.B. vCPU 是虛擬 CPU 的縮寫。

根據預設,帳號代碼可設定下列權限:

ZX_RIGHT_DUPLICATE - out 可能會重複。

ZX_RIGHT_TRANSFER - 您可以透過管道轉移。

ZX_RIGHT_EXECUTEout 可能會繼續執行作業 (或啟動)

ZX_RIGHT_SIGNAL - out 可能會中斷

ZX_RIGHT_READ - out 可能會讀取狀態

ZX_RIGHT_WRITE — 可能寫入其狀態

權限

guest 類型必須為 ZX_OBJ_TYPE_GUEST 且具有 ZX_RIGHT_MANAGE_THREAD

傳回值

zx_vcpu_create() 會在成功時傳回 ZX_OK。失敗時,系統會傳回錯誤值。

錯誤

ZX_ERR_ACCESS_DENIED guest 沒有 ZX_RIGHT_MANAGE_THREAD 權限。

ZX_ERR_BAD_HANDLE 訪客是無效的帳號代碼。

ZX_ERR_BAD_STATE 執行緒目前具有 vCPU。一次只能在執行緒上啟動一個 vCPU。

ZX_ERR_INVALID_ARGS args 包含無效引數,out 為無效指標,或 options 為非零。

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

ZX_ERR_WRONG_TYPE 訪客不是訪客的控制代碼。

另請參閱