摘要
建立 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 先停用現有的帳戶
N.B.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
訪客不是訪客的控制代碼。
另請參閱
zx_guest_create()
zx_guest_set_trap()
zx_vcpu_enter()
zx_vcpu_interrupt()
zx_vcpu_kick()
zx_vcpu_read_state()
zx_vcpu_write_state()