Kernel Functions for Drivers ddi_intr_add_handler(9F)
NAME
ddi_intr_add_handler, ddi_intr_remove_handler - add or
remove interrupt handlerSYNOPSIS
#include
#include
#include
#include
int ddi_intr_add_handler(ddi_intr_handle_t *h,
ddi_intr_handler_t inthandler, void *arg1,
void *arg2);int ddi_intr_remove_handler(ddi_intr_handle_t h);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).PARAMETERS
ddi_intr_add_handler()
h Pointer to the DDI interrupt handle inthandler Pointer to interrupt handler arg1 First argument for the interrupt handler arg2 Second, optional, argument for the interrupt handlerddi_intr_remove_handler()
h DDI interrupt handleDESCRIPTION
The ddi_intr_add_handler() function adds an interrupt
handler given by the inthandler argument to the system withthe handler arguments arg1 and arg2 for the previously allo-
cated interrupt handle specified by the h pointer. The argu-
ments arg1 and arg2 are passed as the first and second argu-
ments, respectively, to the interrupt handler inthandler.SunOS 5.11 Last change: 22 Apr 2005 1
Kernel Functions for Drivers ddi_intr_add_handler(9F)
See
handler. The routine inthandler with the arguments arg1 and arg2 isfor the definition of the interrupt called upon receipt of the appropriate interrupt. The inter-
rupt handler should return DDI_INTR_CLAIMED if the interrupt
is claimed and DDI_INTR_UNCLAIMED otherwise.
The ddi_intr_add_handler() function must be called after
ddi_intr_alloc(), but before ddi_intr_enable() is called.
The interrupt must be enabled through ddi_intr_enable() or
ddi_intr_block_enable() before it can be used.
The ddi_intr_remove_handler() function removes the handler
association, added previously with ddi_intr_add_handler(),
for the interrupt identified by the interrupt handle h argu-
ment. Unloadable drivers should call this routine during their detach(9E) routine to remove the interrupt handler from the system.The ddi_intr_remove_handler() function is used to disassoci-
ate the handler after the interrupt is disabled to removedup-ed interrupt handles. See ddi_intr_dup_handler(9F) for
dup-ed interrupt handles. If a handler is duplicated with
the ddi_intr_dup_handler() function, all added and dupli-
cated instances of the handler must be removed withddi_intr_remove_handler() in order for the handler to be
completely removed.RETURN VALUES
The ddi_intr_add_handler() and ddi_intr_remove_handler()
functions return:DDI_SUCCESS On success.
DDI_EINVAL On encountering invalid input parameters.
DDI_FAILURE On any implementation specific failure.
CONTEXT
The ddi_intr_add_handler() and ddi_intr_remove_handler()
functions can be called from kernel non-interrupt context.
ATTRIBUTES
SunOS 5.11 Last change: 22 Apr 2005 2
Kernel Functions for Drivers ddi_intr_add_handler(9F)
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
SEE ALSO
attributes(5), attach(9E), detach(9E), ddi_intr_alloc(9F),
ddi_intr_block_enable(9F), ddi_intr_disable(9F),
ddi_intr_dup_handler(9F), ddi_intr_enable(9F),
ddi_intr_free(9F), ddi_intr_get_supported_types(9F),
mutex(9F), mutex_init(9F), rw_init(9F), rwlock(9F)
Writing Device Drivers NOTES Consumers of these interfaces should verify that the returnvalue is not equal to DDI_SUCCESS. Incomplete checking for
failure codes could result in inconsistent behavior among platforms.If a device driver that uses MSI and MSI-X interrupts resets
the device, the device might reset its configuration space modifications. Such a reset could cause a device driver tolose any MSI and MSI-X interrupt usage settings that have
been applied. The second argument, arg2, is optional. Device drivers are free to use the two arguments however they see fit. There isno officially recommended model or restrictions. For exam-
ple, an interrupt handler may wish to use the first argument as the pointer to its softstate and the second argument as the value of the MSI vector.SunOS 5.11 Last change: 22 Apr 2005 3