DDI_INTR_SET_NREQ(9F) Kernel Functions for Drivers 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
illumos DDI specific (illumos 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
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 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
handler that can process actions related to changes in interrupt
availability. 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(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Private |
+--------------------+-----------------+
|MT-Level | MT-Safe |
+--------------------+-----------------+
SEE ALSO
attributes(7),
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
additional interrupt resources. In response to diminished I/O load.
the driver may volunteer to return extra interrupt resources back to
the system.
January 5, 2009 DDI_INTR_SET_NREQ(9F)