# zx_vcpu_kick

## Summary

Kick a VCPU, causing it to stop execution.

## Declaration

    #include <zircon/syscalls.h>

    zx_status_t zx_vcpu_kick(zx_handle_t handle);

## Description

`zx_vcpu_kick()` forces the current or next execution of `zx_vcpu_enter()` on
*handle* to return immediately with `ZX_ERR_CANCELED`.

`zx_vcpu_kick()` may be called multiple times on *handle* , but will only affect
the current or next execution of `zx_vcpu_enter()`.

## Rights

*handle* must be of type `ZX_OBJ_TYPE_VCPU` and have `ZX_RIGHT_EXECUTE`.

## Return value

`zx_vcpu_kick()` returns `ZX_OK` on success. On failure, an error value is
returned.

## Errors

`ZX_ERR_ACCESS_DENIED` *handle* does not have the `ZX_RIGHT_EXECUTE` right.

`ZX_ERR_BAD_HANDLE` *handle* is an invalid handle.

`ZX_ERR_WRONG_TYPE` *handle* is not a handle to a VCPU.

## See also

- [`zx_guest_create()`](https://fuchsia.dev/reference/syscalls/guest_create)
- [`zx_guest_set_trap()`](https://fuchsia.dev/reference/syscalls/guest_set_trap)
- [`zx_vcpu_create()`](https://fuchsia.dev/reference/syscalls/vcpu_create)
- [`zx_vcpu_enter()`](https://fuchsia.dev/reference/syscalls/vcpu_enter)
- [`zx_vcpu_interrupt()`](https://fuchsia.dev/reference/syscalls/vcpu_interrupt)
- [`zx_vcpu_read_state()`](https://fuchsia.dev/reference/syscalls/vcpu_read_state)
- [`zx_vcpu_write_state()`](https://fuchsia.dev/reference/syscalls/vcpu_write_state)