DDI_INTR_SET_NREQ(9F)DDI_INTR_SET_NREQ(9F)NAME
ddi_intr_set_nreq - set the number of interrupts requested for a device
driver instance
SYNOPSIS
#include <sys/ddi_intr.h>
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, if the driver instance already has two MSI-X vec‐
tors 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 maximum number
of interrupts supported by the device hardware, as reported by a call
to the ddi_intr_get_nintrs(9F) function. 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 han‐
dler that can process actions related to changes in interrupt avail‐
ability. See ddi_cb_register(9F) for an explanation on how to enable
this functionality.
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 value
DDI_ENOTSUP
The operation is not supported. The driver must have a
registered callback, and the system 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 attributes:
┌────────────────────┬─────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├────────────────────┼─────────────────┤
│Interface Stability │ Private │
├────────────────────┼─────────────────┤
│MT-Level │ MT-Safe │
└────────────────────┴─────────────────┘
SEE ALSOattributes(5), attach(9E), ddi_cb_register(9F), ddi_intr_alloc(9F),
ddi_intr_get_nintrs(9F)NOTES
The Interrupt Resource Management feature is limited to device driver
instances that are using MSI-X interrupts (interrupt 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 the driver's first call to
the ddi_intr_alloc(9F) function, specifically during the driver
instance's attach(9E) 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 addi‐
tional interrupt resources. In response to diminished I/O load. the
driver may volunteer to return extra interrupt resources back to the
system.
Jan 5, 2009 DDI_INTR_SET_NREQ(9F)