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() 用于开始或恢复 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(),系统已取消 handleZX_ERR_CANCELED 执行。

ZX_ERR_INTERNAL 执行 handle 时出错。

ZX_ERR_INVALID_ARGS 数据包是无效的指针。

ZX_ERR_NOT_SUPPORTED执行 handle 时遇到了不受支持的操作。

ZX_ERR_WRONG_TYPE handle 不是 vCPU 的句柄。

另请参阅