Enter a VCPU, causing it to resume execution.
#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()
begins or resumes execution of handle, and blocks until it
has paused execution. On pause of execution, packet is populated with reason
for the pause. After handling the reason, execution may be resumed by calling
zx_vcpu_enter()
again.
If zx_vcpu_enter()
returns ZX_ERR_CANCELED due to zx_vcpu_kick()
being
called on handle, execution may be resumed by calling zx_vcpu_enter()
again.
zx_vcpu_enter()
must be called on the same thread handle was created on.
handle must be of type ZX_OBJ_TYPE_VCPU and have ZX_RIGHT_EXECUTE.
zx_vcpu_enter()
returns ZX_OK on success. On failure, an error value is
returned.
ZX_ERR_ACCESS_DENIED handle does not have the ZX_RIGHT_EXECUTE right.
ZX_ERR_BAD_HANDLE handle is an invalid handle.
ZX_ERR_BAD_STATE handle is in a bad state, and can not be executed.
ZX_ERR_CANCELED execution of handle was canceled, due to zx_vcpu_kick()
being called on handle.
ZX_ERR_INTERNAL There was an error executing handle.
ZX_ERR_INVALID_ARGS packet is an invalid pointer.
ZX_ERR_NOT_SUPPORTED An unsupported operation was encountered while executing handle.
ZX_ERR_WRONG_TYPE handle is not a handle to a VCPU.