总结
输入 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 的执行,并阻止其执行,直到其暂停执行。暂停执行时,使用暂停原因填充数据包。处理该原因后,可以通过再次调用 zx_vcpu_enter()
来恢复执行。
如果 zx_vcpu_enter()
因在 handle 上调用 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
句柄处于错误状态,无法执行。
由于对 handle 调用 zx_vcpu_kick()
,系统已取消 handle 的 ZX_ERR_CANCELED
执行。
ZX_ERR_INTERNAL
执行 handle 时出错。
ZX_ERR_INVALID_ARGS
数据包是无效的指针。
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()