interrupt_bind - Bind an interrupt vector to interrupt object
#include <zircon/syscalls.h> zx_status_t zx_interrupt_bind(zx_handle_t handle, uint32_t slot, zx_handle_t resource, uint32_t vector, uint32_t options);
interrupt_bind() binds an interrupt vector to an interrupt object. The slot parameter is a number to be associated with the interrupt vector for use by the interrupt_wait(), interrupt_get_timestamp() and interrupt_signal() syscalls. slot must be less than ZX_INTERRUPT_MAX_SLOTS, and cannot be ZX_INTERRUPT_SLOT_USER, which is implicitly bound by the system to all interrupt objects.
After calling this, interrupt_wait() can be used to wait for interrupts on the specified interrupt vector.
interrupt_bind() can also be used to bind a slot to a virtual interrupt. To bind a virtual interrupt, set the options flag to ZX_INTERRUPT_VIRTUAL. In this case the resource and vector parameters are ignored.
PCI interrupts are bound to the system for the PCI device's interrupt vector. The PCI device interrupt is signaled on ZX_PCI_INTERRUPT_SLOT. Interrupt handles referring to a PCI interrupt may only be additionally bound to virtual interrupts.
The parameter vector is the interrupt vector number for the interrupt.
The parameter options is a bitfield containing zero or more of the following flags:
ZX_INTERRUPT_REMAP_IRQ - remap interrupt vector if necessary
ZX_INTERRUPT_MODE_EDGE_LOW - edge trigger interrupt on low state
ZX_INTERRUPT_MODE_EDGE_HIGH - edge trigger interrupt on high state
ZX_INTERRUPT_MODE_LEVEL_LOW - level trigger interrupt on low state
ZX_INTERRUPT_MODE_LEVEL_HIGH - level trigger interrupt on high state
ZX_INTERRUPT_MODE_DEFAULT - interrupt triggering will be set to the default mode for the platform
ZX_INTERRUPT_VIRTUAL - binds the slot to be used for a virtual interrupt
interrupt_bind() returns ZX_OK on success. In the event of failure, a negative error value is returned.
ZX_ERR_BAD_HANDLE handle is not a valid handle.
ZX_ERR_ACCESS_DENIED the resource handle does not allow this operation.
ZX_ERR_ALREADY_BOUND slot has already been bound to this handle or the interrupt vector vector has already been bound to an interrupt object.
ZX_ERR_INVALID_ARGS options contains invalid flags or the slot parameter is invalid.
interrupt_create, interrupt_wait, interrupt_get_timestamp, interrupt_signal, handle_close.