摘要
输入 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()
开始或继续执行 handle,并阻止,直到
已暂停执行。执行暂停时,packet 会填充原因
暂停时间。处理原因后,可通过调用
zx_vcpu_enter()
。
如果 zx_vcpu_enter()
因 zx_vcpu_kick()
而返回 ZX_ERR_CANCELED
通过 handle 调用,可以通过再次调用 zx_vcpu_enter()
来恢复执行。
必须在创建 handle 的同一线程上调用 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
handle 是无效的句柄。
ZX_ERR_BAD_STATE
handle 处于错误状态,无法执行。
由于 zx_vcpu_kick()
,已取消 handle 的 ZX_ERR_CANCELED
执行
在 handle 上调用的方法。
ZX_ERR_INTERNAL
执行 handle 时出错。
ZX_ERR_INVALID_ARGS
packet 是无效的指针。
ZX_ERR_NOT_SUPPORTED
发生错误
执行 handle。
ZX_ERR_WRONG_TYPE
handle 不是 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()