# zx_interrupt_bind_vcpu

## SUMMARY

<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->

Bind an interrupt object to a VCPU.

## DECLARATION

<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->

```c
#include <zircon/syscalls.h>

zx_status_t zx_interrupt_bind_vcpu(zx_handle_t handle,
                                   zx_handle_t vcpu,
                                   uint32_t options);
```

## DESCRIPTION

`zx_interrupt_bind_vcpu()` binds an interrupt object to a VCPU. When the
interrupt object is triggered, the interrupt is redirected to the VCPU, in order
to be processed by a guest with no host intervention.

## RIGHTS

<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->

*handle* must be of type **ZX_OBJ_TYPE_INTERRUPT** and have **ZX_RIGHT_READ**.

*vcpu* must be of type **ZX_OBJ_TYPE_VCPU** and have **ZX_RIGHT_WRITE**.

## RETURN VALUE

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

## ERRORS

**ZX_ERR_BAD_HANDLE** *handle* or *vcpu* are not valid handles.

**ZX_ERR_WRONG_TYPE** *handle* is not an interrupt object or *vcpu* is not a
VCPU.

**ZX_ERR_CANCELED** [`zx_interrupt_destroy()`] was called on *handle*.

**ZX_ERR_BAD_STATE**  a thread is waiting on the interrupt using
[`zx_interrupt_wait()`].

**ZX_ERR_ACCESS_DENIED** *handle* lacks **ZX_RIGHT_READ** or *vcpu* lacks
**ZX_RIGHT_WRITE**.

**ZX_ERR_ALREADY_BOUND** *handle* is already bound to another vcpu or to a
port.

**ZX_ERR_INVALID_ARGS** *vcpu* is bound to a different guest than previously
bound VCPUs, or *options* is non-zero.

## SEE ALSO

 - [`zx_guest_create()`]
 - [`zx_interrupt_create()`]
 - [`zx_vcpu_create()`]

<!-- References updated by update-docs-from-fidl, do not edit. -->

[`zx_guest_create()`]: guest_create.md
[`zx_interrupt_create()`]: interrupt_create.md
[`zx_interrupt_destroy()`]: interrupt_destroy.md
[`zx_interrupt_wait()`]: interrupt_wait.md
[`zx_vcpu_create()`]: vcpu_create.md
