| # 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 |