Kernel Functions for Drivers ddi_intr_set_nreq(9F)
NAME
ddi_intr_set_nreq - set the number of interrupts requested
for a device driver instanceSYNOPSIS
#include
int ddi_intr_set_nreq(dev_info_t *dip, int nreq);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).PARAMETERS
dip Pointer to the dev_info structure.
nreq Number of interrupts requested.DESCRIPTION
The ddi_intr_set_nreq() function changes the number of
interrupts requested by a device driver instance. The nreq parameter is the total number of interrupt resources that this instance of the device driver would like to have available. The nreq parameter includes any interrupt resources already allocated by the driver. For example, ifthe driver instance already has two MSI-X vectors and it
wants two more, it should call this function with an nreq parameter set to four.The nreq parameter can be any value between one and the max-
imum number of interrupts supported by the device hardware,as reported by a call to the ddi_intr_get_nintrs(9F) func-
tion. The driver receives a callback notifying it in cases when it must release any previously allocated interrupts, or when it is allowed to allocate more interrupts as a result of its new nreq parameter.The ddi_intr_set_nreq()function is not supported unless a
driver is already consuming interrupts, and if it has a registered callback handler that can process actions related to changes in interrupt availability. Seeddi_cb_register(9F) for an explanation on how to enable this
functionality.SunOS 5.11 Last change: 5 Jan 2009 1
Kernel Functions for Drivers ddi_intr_set_nreq(9F)
RETURN VALUES
The ddi_intr_set_nreq() function returns:
DDI_SUCCESS on success
DDI_EINVAL The operation is invalid because the nreq
parameter is not a legal valueDDI_ENOTSUP The operation is not supported. The driver
must have a registered callback, and the sys-
tem must have interrupt pools implemented.DDI_FAILURE Implementation specific failure
CONTEXT
These 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 | Private ||_____________________________|_____________________________|
| MT-Level | MT-Safe |
|_____________________________|_____________________________|
SEE ALSO
attributes(5), attach(9E), ddi_cb_register(9F),
ddi_intr_alloc(9F), ddi_intr_get_nintrs(9F)
NOTESThe Interrupt Resource Management feature is limited to dev-
ice driver instances that are using MSI-X interrupts (inter-
rupt type DDI_INTR_TYPE_MSIX). Attempts to use this function
for any other type of interrupts fails with DDI_ENOTSUP.
The total number of interrupts requested by the driver is initially defined by the count parameter provided by thedriver's first call to the ddi_intr_alloc(9F) function,
specifically during the driver instance's attach(9E)SunOS 5.11 Last change: 5 Jan 2009 2
Kernel Functions for Drivers ddi_intr_set_nreq(9F)
routine. The ddi_intr_set_nreq() function is only used if
the driver instance experiences changes in its I/O load. In
response to increased I/O load, the driver may want to request additional interrupt resources. In response to
diminished I/O load. the driver may volunteer to return extra interrupt resources back to the system.
SunOS 5.11 Last change: 5 Jan 2009 3