Kernel Functions for Drivers ddi_intr_enable(9F)
NAME
ddi_intr_enable, ddi_intr_block_enable, ddi_intr_disable,
ddi_intr_block_disable - enable or disable a given interrupt
or range of interruptsSYNOPSIS
#include
#include
#include
#include
int ddi_intr_enable(ddi_intr_handle_t h);
int ddi_intr_block_enable(ddi_intr_handle_t *h_array, int count);
int ddi_intr_disable(ddi_intr_handle_t h);
int ddi_intr_block_disable(ddi_intr_handle_t *h_array, int count);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).PARAMETERS
ddi_intr_enable()
h DDI interrupt handleddi_intr_block_enable()
h_array Pointer to an array of DDI interrupt handles
count Number of interruptsddi_intr_disable()
h DDI interrupt handleddi_intr_block_disable()
SunOS 5.11 Last change: 22 Apr 2005 1
Kernel Functions for Drivers ddi_intr_enable(9F)
h_array Pointer to an array of DDI interrupt handles
count Number of interruptsDESCRIPTION
The ddi_intr_enable() function enables the interrupt given
by the interrupt handle h.The ddi_intr_block_enable() function enables a range of
interrupts given by the count and h_array arguments, where
count must be at least 1 and h_array is pointer to a count-
sized array of interrupt handles.The ddi_intr_block_enable() function can be used only if the
device or host bridge supports the block enable/disablefeature. The ddi_intr_get_cap() function returns the RO flag
DDI_INTR_FLAG_BLOCK if the device or host bridge supports
the interrupt block enable/disable feature for the giveninterrupt type. The ddi_intr_block_enable() function is use-
ful for enabling MSI interrupts when the optional per-vector
masking capability is not supported.The ddi_intr_enable() or ddi_intr_block_enable() functions
must be called after the required interrupt resources areallocated with ddi_intr_alloc(), the interrupt handlers are
added through ddi_intr_add_handler(), and the required locks
are initialized by mutex(9F) or rwlock(9F). Once enabled by either of the enable calls, the interrupt can be taken and passed to the driver's interrupt service routine. Enabling an interrupt implies clearing any system or device mask bits associated with the interrupt.The ddi_intr_disable() function disables the interrupt given
by the interrupt handle h.The ddi_intr_block_disable() function disables a range of
interrupts given by the count and h_array arguments, where
count must be at least 1 and h_array is pointer to a count-
sized array of interrupt handles.The ddi_intr_block_disable() function can be used only if
the device or host bridge supports the block enable/disableSunOS 5.11 Last change: 22 Apr 2005 2
Kernel Functions for Drivers ddi_intr_enable(9F)
feature. The ddi_intr_get_cap() function returns the RO flag
DDI_INTR_FLAG_BLOCK if the device or host bridge supports
the interrupt block enable/disable feature for the giveninterrupt type. The ddi_intr_block_disable() function is
useful for disabling MSI interrupts when the optional per-
vector masking capability is not supported.The ddi_intr_disable() or ddi_intr_block_disable() functions
must be called before removing the interrupt handler and freeing the corresponding interrupt withddi_intr_remove_handler() and ddi_intr_free(), respectively.
The ddi_intr_block_disable() function should be called if
the ddi_intr_block_enable() function was used to enable the
interrupts.RETURN VALUES
The ddi_intr_enable(), ddi_intr_block_enable(),
ddi_intr_disable(), and ddi_intr_block_disable() functions
return:DDI_SUCCESS On success.
DDI_EINVAL On encountering invalid input parameters.
DDI_FAILURE On any implementation specific failure.
CONTEXT
The ddi_intr_enable(), ddi_intr_block_enable(),
ddi_intr_disable(), and ddi_intr_block_disable() functions
can be called from kernel non-interrupt context.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
SEE ALSO
attributes(5), ddi_intr_add_handler(9F), ddi_intr_alloc(9F),
ddi_intr_dup_handler(9F), ddi_intr_free(9F),
ddi_intr_get_cap(9F), ddi_intr_remove_handler(9F),
SunOS 5.11 Last change: 22 Apr 2005 3
Kernel Functions for Drivers ddi_intr_enable(9F)
mutex(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.SunOS 5.11 Last change: 22 Apr 2005 4