zx_vcpu_enter

摘要

輸入 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 的控制代碼。

另請參閱