摘要
建立 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 數量不需要與
這類機制更為快速
entry 是指示指標,用來表示訪客實體中的位置 系統應會開始執行 vCPU 的記憶體
out 會繫結至建立該執行緒的執行緒,以及在該區塊上執行的所有系統呼叫
必須從相同的執行緒呼叫,但
zx_vcpu_interrupt()。
執行緒中一次只能存在一個 vCPU。執行緒可以建立另一個 vCPU 先停用現有的帳戶
北VCPU 是虛擬 CPU 的縮寫。
根據預設,帳號代碼將設定以下權限:
ZX_RIGHT_DUPLICATE - out 可能會重複。
ZX_RIGHT_TRANSFER - 傳出可透過管道轉移。
ZX_RIGHT_EXECUTE - out 可能恢復執行 (或已開始)
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 訪客沒有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 訪客不是訪客的控制代碼。