# zx_vcpu_interrupt

## Summary

Raise an interrupt on a VCPU.

## Declaration

    #include <zircon/syscalls.h>

    zx_status_t zx_vcpu_interrupt(zx_handle_t handle, uint32_t vector);

## Description

`zx_vcpu_interrupt()` raises an interrupt of *vector* on *handle*, and may be
called from any thread.

## Rights

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

## Return value

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

## Errors

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

`ZX_ERR_BAD_HANDLE` *handle* is an invalid handle.

`ZX_ERR_OUT_OF_RANGE` *vector* is outside of the range interrupts supported by
the current architecture.

`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_kick()`](https://fuchsia.dev/reference/syscalls/vcpu_kick)
- [`zx_vcpu_read_state()`](https://fuchsia.dev/reference/syscalls/vcpu_read_state)
- [`zx_vcpu_write_state()`](https://fuchsia.dev/reference/syscalls/vcpu_write_state)