摘要
輸入 vCPU 來繼續執行作業。
宣告
#include <zircon/syscalls.h>
#include <zircon/syscalls/port.h>
zx_status_t zx_vcpu_enter(zx_handle_t handle, zx_port_packet_t* packet);
說明
zx_vcpu_enter()
會開始或繼續執行帳號代碼,並會封鎖,直到暫停執行為止。在暫停執行時,系統會填入封包來提供暫停的原因。處理原因後,您可以再次呼叫 zx_vcpu_enter()
來繼續執行作業。
如果 zx_vcpu_enter()
因在帳號代碼上呼叫 zx_vcpu_kick()
而傳回 ZX_ERR_CANCELED
,再次呼叫 zx_vcpu_enter()
即可繼續執行。
zx_vcpu_enter()
必須透過建立時所在的執行緒處理常式呼叫。
權限
handle 必須是 ZX_OBJ_TYPE_VCPU
類型,且具有 ZX_RIGHT_EXECUTE
。
傳回值
zx_vcpu_enter()
會在成功時傳回 ZX_OK
。失敗時,系統會傳回錯誤值。
錯誤
ZX_ERR_ACCESS_DENIED
處理常式沒有 ZX_RIGHT_EXECUTE
權利。
ZX_ERR_BAD_HANDLE
帳號代碼是無效的帳號代碼。
ZX_ERR_BAD_STATE
處理常式處於不良狀態,因此無法執行。
由於在帳號代碼上呼叫 zx_vcpu_kick()
,因此系統取消了帳號代碼的 ZX_ERR_CANCELED
執行程序。
ZX_ERR_INTERNAL
執行帳號代碼時發生錯誤。
ZX_ERR_INVALID_ARGS
封包是無效指標。
ZX_ERR_NOT_SUPPORTED
執行控制代碼時發生不支援的作業。
ZX_ERR_WRONG_TYPE
處理常式不是 vCPU 的控制代碼。
另請參閱
zx_guest_create()
zx_guest_set_trap()
zx_vcpu_create()
zx_vcpu_interrupt()
zx_vcpu_kick()
zx_vcpu_read_state()
zx_vcpu_write_state()