Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F144559156
D6304.1775465102.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
19 KB
Referenced Files
None
Subscribers
None
D6304.1775465102.diff
View Options
Index: sys/arm/allwinner/a10/a10_intc.c
===================================================================
--- sys/arm/allwinner/a10/a10_intc.c
+++ sys/arm/allwinner/a10/a10_intc.c
@@ -106,6 +106,7 @@
struct a10_aintc_softc {
device_t sc_dev;
+ struct intr_pic * sc_pic;
struct resource * aintc_res;
bus_space_tag_t aintc_bst;
bus_space_handle_t aintc_bsh;
@@ -266,11 +267,11 @@
}
xref = OF_xref_from_node(ofw_bus_get_node(sc->sc_dev));
- error = intr_pic_register(sc->sc_dev, xref);
- if (error != 0)
- return (error);
+ sc->sc_pic = intr_pic_register(sc->sc_dev, xref);
+ if (sc->sc_pic == NULL)
+ return (ENXIO);
- return (intr_pic_claim_root(sc->sc_dev, xref, a10_intr, sc, 0));
+ return (intr_pic_claim_root(sc->sc_pic, a10_intr, sc, 0));
}
static void
Index: sys/arm/arm/gic.c
===================================================================
--- sys/arm/arm/gic.c
+++ sys/arm/arm/gic.c
@@ -152,6 +152,7 @@
struct arm_gic_softc {
device_t gic_dev;
#ifdef INTRNG
+ struct intr_pic * gic_pic;
void * gic_intrhand;
struct gic_irqsrc * gic_irqs;
#endif
@@ -669,7 +670,8 @@
* Now, when everything is initialized, it's right time to
* register interrupt controller to interrupt framefork.
*/
- if (intr_pic_register(dev, xref) != 0) {
+ sc->gic_pic = intr_pic_register(dev, xref);
+ if (sc->gic_pic == NULL) {
device_printf(dev, "could not register PIC\n");
goto cleanup;
}
@@ -681,23 +683,23 @@
*/
pxref = ofw_bus_find_iparent(ofw_bus_get_node(dev));
if (pxref == 0 || xref == pxref) {
- if (intr_pic_claim_root(dev, xref, arm_gic_intr, sc,
+ if (intr_pic_claim_root(sc->gic_pic, arm_gic_intr, sc,
GIC_LAST_SGI - GIC_FIRST_SGI + 1) != 0) {
device_printf(dev, "could not set PIC as a root\n");
- intr_pic_deregister(dev, xref);
+ intr_pic_deregister(sc->gic_pic);
goto cleanup;
}
} else {
if (sc->gic_res[2] == NULL) {
device_printf(dev,
"not root PIC must have defined interrupt\n");
- intr_pic_deregister(dev, xref);
+ intr_pic_deregister(sc->gic_pic);
goto cleanup;
}
if (bus_setup_intr(dev, sc->gic_res[2], INTR_TYPE_CLK,
arm_gic_intr, NULL, sc, &sc->gic_intrhand)) {
device_printf(dev, "could not setup irq handler\n");
- intr_pic_deregister(dev, xref);
+ intr_pic_deregister(sc->gic_pic);
goto cleanup;
}
}
Index: sys/arm/broadcom/bcm2835/bcm2835_gpio.c
===================================================================
--- sys/arm/broadcom/bcm2835/bcm2835_gpio.c
+++ sys/arm/broadcom/bcm2835/bcm2835_gpio.c
@@ -104,6 +104,7 @@
struct bcm_gpio_softc {
device_t sc_dev;
device_t sc_busdev;
+ struct intr_pic * sc_pic;
struct mtx sc_mtx;
struct resource * sc_res[BCM_GPIO_IRQS + 1];
bus_space_tag_t sc_bst;
@@ -1045,8 +1046,12 @@
if (error != 0)
return (error); /* XXX deregister ISRCs */
}
- return (intr_pic_register(sc->sc_dev,
- OF_xref_from_node(ofw_bus_get_node(sc->sc_dev))));
+ sc->sc_pic = intr_pic_register(sc->sc_dev,
+ OF_xref_from_node(ofw_bus_get_node(sc->sc_dev)));
+ if (sc->sc_pic == NULL)
+ return (ENXIO);
+
+ return (0);
}
static int
Index: sys/arm/broadcom/bcm2835/bcm2835_intr.c
===================================================================
--- sys/arm/broadcom/bcm2835/bcm2835_intr.c
+++ sys/arm/broadcom/bcm2835/bcm2835_intr.c
@@ -143,6 +143,7 @@
bus_space_tag_t intc_bst;
bus_space_handle_t intc_bsh;
#ifdef INTRNG
+ struct intr_pic * intc_pic;
struct resource * intc_irq_res;
void * intc_irq_hdl;
struct bcm_intc_irqsrc intc_isrcs[BCM_INTC_NIRQS];
@@ -309,7 +310,7 @@
{
}
-static int
+static struct intr_pic *
bcm_intc_pic_register(struct bcm_intc_softc *sc, intptr_t xref)
{
struct bcm_intc_irqsrc *bii;
@@ -334,12 +335,12 @@
bii->bii_enable_reg = INTC_ENABLE_BANK2;
bii->bii_mask = 1 << IRQ_BANK2(irq);
} else
- return (ENXIO);
+ return (NULL);
error = intr_isrc_register(&bii->bii_isrc, sc->sc_dev, 0,
"%s,%u", name, irq);
if (error != 0)
- return (error);
+ return (NULL);
}
return (intr_pic_register(sc->sc_dev, xref));
}
@@ -379,7 +380,8 @@
#ifdef INTRNG
xref = OF_xref_from_node(ofw_bus_get_node(dev));
- if (bcm_intc_pic_register(sc, xref) != 0) {
+ sc->intc_pic = bcm_intc_pic_register(sc, xref);
+ if (sc->intc_pic == NULL) {
bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->intc_res);
device_printf(dev, "could not register PIC\n");
return (ENXIO);
@@ -389,7 +391,8 @@
sc->intc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
RF_ACTIVE);
if (sc->intc_irq_res == NULL) {
- if (intr_pic_claim_root(dev, xref, bcm2835_intc_intr, sc, 0) != 0) {
+ if (intr_pic_claim_root(sc->intc_pic, bcm2835_intc_intr, sc,
+ 0) != 0) {
/* XXX clean up */
device_printf(dev, "could not set PIC as a root\n");
return (ENXIO);
Index: sys/arm/broadcom/bcm2835/bcm2836.c
===================================================================
--- sys/arm/broadcom/bcm2835/bcm2836.c
+++ sys/arm/broadcom/bcm2835/bcm2836.c
@@ -166,6 +166,7 @@
struct bcm_lintc_softc {
device_t bls_dev;
+ struct intr_pic * bls_pic;
struct mtx bls_mtx;
struct resource * bls_mem;
bus_space_tag_t bls_bst;
@@ -653,11 +654,11 @@
}
xref = OF_xref_from_node(ofw_bus_get_node(sc->bls_dev));
- error = intr_pic_register(sc->bls_dev, xref);
- if (error != 0)
- return (error);
+ sc->bls_pic = intr_pic_register(sc->bls_dev, xref);
+ if (sc->bls_pic == NULL)
+ return (ENXIO);
- return (intr_pic_claim_root(sc->bls_dev, xref, bcm_lintc_intr, sc, 0));
+ return (intr_pic_claim_root(sc->bls_pic, bcm_lintc_intr, sc, 0));
}
static int
Index: sys/arm/mv/mpic.c
===================================================================
--- sys/arm/mv/mpic.c
+++ sys/arm/mv/mpic.c
@@ -274,7 +274,7 @@
bus_release_resources(dev, mv_mpic_spec, sc->mpic_res);
return (ENXIO);
}
- if (intr_pic_register(dev, OF_xref_from_device(dev)) != 0) {
+ if (intr_pic_register(dev, OF_xref_from_device(dev)) == NULL) {
device_printf(dev, "could not register PIC\n");
bus_release_resources(dev, mv_mpic_spec, sc->mpic_res);
return (ENXIO);
Index: sys/arm/nvidia/tegra_gpio.c
===================================================================
--- sys/arm/nvidia/tegra_gpio.c
+++ sys/arm/nvidia/tegra_gpio.c
@@ -433,7 +433,7 @@
return (FILTER_HANDLED);
}
-static int
+static struct intr_pic *
tegra_gpio_pic_attach(struct tegra_gpio_softc *sc)
{
int error;
@@ -450,7 +450,7 @@
error = intr_isrc_register(&sc->isrcs[irq].isrc,
sc->dev, 0, "%s,%u", name, irq);
if (error != 0)
- return (error); /* XXX deregister ISRCs */
+ return (NULL); /* XXX deregister ISRCs */
}
return (intr_pic_register(sc->dev,
OF_xref_from_node(ofw_bus_get_node(sc->dev))));
@@ -814,7 +814,7 @@
}
}
- if (tegra_gpio_pic_attach(sc) != 0) {
+ if (tegra_gpio_pic_attach(sc) == NULL) {
device_printf(dev, "WARNING: unable to attach PIC\n");
tegra_gpio_detach(dev);
return (ENXIO);
Index: sys/arm/nvidia/tegra_lic.c
===================================================================
--- sys/arm/nvidia/tegra_lic.c
+++ sys/arm/nvidia/tegra_lic.c
@@ -233,7 +233,7 @@
}
- if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) {
+ if (intr_pic_register(dev, OF_xref_from_node(node)) == NULL) {
device_printf(dev, "Cannot register PIC\n");
goto fail;
}
Index: sys/arm/ti/aintc.c
===================================================================
--- sys/arm/ti/aintc.c
+++ sys/arm/ti/aintc.c
@@ -82,6 +82,7 @@
bus_space_handle_t aintc_bsh;
uint8_t ver;
#ifdef INTRNG
+ struct intr_pic * sc_pic;
struct ti_aintc_irqsrc aintc_isrcs[INTC_NIRQS];
#endif
};
@@ -236,11 +237,11 @@
}
xref = OF_xref_from_node(ofw_bus_get_node(sc->sc_dev));
- error = intr_pic_register(sc->sc_dev, xref);
- if (error != 0)
- return (error);
+ sc->sc_pic = intr_pic_register(sc->sc_dev, xref);
+ if (sc->sc_pic == NULL)
+ return (ENXIO);
- return (intr_pic_claim_root(sc->sc_dev, xref, ti_aintc_intr, sc, 0));
+ return (intr_pic_claim_root(sc->sc_pic, ti_aintc_intr, sc, 0));
}
#else
Index: sys/arm/ti/omap4/omap4_wugen.c
===================================================================
--- sys/arm/ti/omap4/omap4_wugen.c
+++ sys/arm/ti/omap4/omap4_wugen.c
@@ -210,7 +210,7 @@
return (ENXIO);
}
- if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) {
+ if (intr_pic_register(dev, OF_xref_from_node(node)) == NULL) {
device_printf(dev, "can't register PIC\n");
goto fail;
}
Index: sys/arm/ti/ti_gpio.c
===================================================================
--- sys/arm/ti/ti_gpio.c
+++ sys/arm/ti/ti_gpio.c
@@ -122,7 +122,7 @@
static int ti_gpio_detach(device_t);
#ifdef INTRNG
-static int ti_gpio_pic_attach(struct ti_gpio_softc *sc);
+static struct intr_pic *ti_gpio_pic_attach(struct ti_gpio_softc *sc);
static int ti_gpio_pic_detach(struct ti_gpio_softc *sc);
#endif
@@ -709,7 +709,7 @@
}
#ifdef INTRNG
- if (ti_gpio_pic_attach(sc) != 0) {
+ if (ti_gpio_pic_attach(sc) == NULL) {
device_printf(dev, "WARNING: unable to attach PIC\n");
ti_gpio_detach(dev);
return (ENXIO);
@@ -883,7 +883,7 @@
return (FILTER_HANDLED);
}
-static int
+static struct intr_pic *
ti_gpio_pic_attach(struct ti_gpio_softc *sc)
{
int error;
@@ -902,7 +902,7 @@
error = intr_isrc_register(&sc->sc_isrcs[irq].tgi_isrc,
sc->sc_dev, 0, "%s,%u", name, irq);
if (error != 0)
- return (error); /* XXX deregister ISRCs */
+ return (NULL); /* XXX deregister ISRCs */
}
return (intr_pic_register(sc->sc_dev,
OF_xref_from_node(ofw_bus_get_node(sc->sc_dev))));
Index: sys/kern/subr_intr.c
===================================================================
--- sys/kern/subr_intr.c
+++ sys/kern/subr_intr.c
@@ -521,6 +521,7 @@
int error;
struct intr_irqsrc *isrc;
struct intr_dev_data *ddata;
+ struct intr_pic *pic;
isrc = isrc_lookup(irq);
if (isrc != NULL) {
@@ -887,16 +888,10 @@
* Destroy interrupt controller.
*/
static void
-pic_destroy(device_t dev, intptr_t xref)
+pic_destroy(struct intr_pic *pic)
{
- struct intr_pic *pic;
mtx_lock(&pic_list_lock);
- pic = pic_lookup_locked(dev, xref);
- if (pic == NULL) {
- mtx_unlock(&pic_list_lock);
- return;
- }
SLIST_REMOVE(&pic_list, pic, intr_pic, pic_next);
mtx_unlock(&pic_list_lock);
@@ -906,27 +901,27 @@
/*
* Register interrupt controller.
*/
-int
+struct intr_pic *
intr_pic_register(device_t dev, intptr_t xref)
{
struct intr_pic *pic;
if (dev == NULL)
- return (EINVAL);
+ return (NULL);
pic = pic_create(dev, xref);
if (pic == NULL)
- return (ENOMEM);
+ return (NULL);
debugf("PIC %p registered for %s <dev %p, xref %x>\n", pic,
device_get_nameunit(dev), dev, xref);
- return (0);
+ return (pic);
}
/*
* Unregister interrupt controller.
*/
int
-intr_pic_deregister(device_t dev, intptr_t xref)
+intr_pic_deregister(struct intr_pic *pic)
{
panic("%s: not implemented", __func__);
@@ -945,16 +940,12 @@
* an interrupts property and thus no explicit interrupt parent."
*/
int
-intr_pic_claim_root(device_t dev, intptr_t xref, intr_irq_filter_t *filter,
+intr_pic_claim_root(struct intr_pic *pic, intr_irq_filter_t *filter,
void *arg, u_int ipicount)
{
- if (pic_lookup(dev, xref) == NULL) {
- device_printf(dev, "not registered\n");
- return (EINVAL);
- }
if (filter == NULL) {
- device_printf(dev, "filter missing\n");
+ device_printf(pic->pic_dev, "filter missing\n");
return (EINVAL);
}
@@ -964,11 +955,11 @@
* routine (handler) on the root. See intr_irq_handler().
*/
if (intr_irq_root_dev != NULL) {
- device_printf(dev, "another root already set\n");
+ device_printf(pic->pic_dev, "another root already set\n");
return (EBUSY);
}
- intr_irq_root_dev = dev;
+ intr_irq_root_dev = pic->pic_dev;
irq_root_filter = filter;
irq_root_arg = arg;
irq_root_ipicount = ipicount;
Index: sys/mips/mediatek/mtk_gpio_v1.c
===================================================================
--- sys/mips/mediatek/mtk_gpio_v1.c
+++ sys/mips/mediatek/mtk_gpio_v1.c
@@ -90,6 +90,7 @@
struct mtk_gpio_softc {
device_t dev;
device_t busdev;
+ struct intr_pic * pic;
struct resource *res[2];
struct mtx mtx;
struct mtk_gpio_pin pins[MTK_GPIO_PINS];
@@ -308,7 +309,8 @@
goto fail;
}
- if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) {
+ sc->pic = intr_pic_register(dev, OF_xref_from_node(node));
+ if (sc->pic == NULL) {
device_printf(dev, "could not register PIC\n");
goto fail;
}
@@ -323,7 +325,7 @@
return (0);
fail_pic:
- intr_pic_deregister(dev, OF_xref_from_node(node));
+ intr_pic_deregister(sc->pic);
fail:
if(sc->intrhand != NULL)
bus_teardown_intr(dev, sc->res[1], sc->intrhand);
@@ -339,7 +341,7 @@
phandle_t node;
node = ofw_bus_get_node(dev);
- intr_pic_deregister(dev, OF_xref_from_node(node));
+ intr_pic_deregister(sc->pic);
if (sc->intrhand != NULL)
bus_teardown_intr(dev, sc->res[1], sc->intrhand);
bus_release_resources(dev, mtk_gpio_spec, sc->res);
Index: sys/mips/mediatek/mtk_gpio_v2.c
===================================================================
--- sys/mips/mediatek/mtk_gpio_v2.c
+++ sys/mips/mediatek/mtk_gpio_v2.c
@@ -76,6 +76,7 @@
struct mtk_gpio_softc {
device_t dev;
device_t busdev;
+ struct intr_pic * pic;
struct resource *res[2];
struct mtx mtx;
struct mtk_gpio_pin pins[MTK_GPIO_PINS];
@@ -299,7 +300,8 @@
goto fail;
}
- if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) {
+ sc->pic = intr_pic_register(dev, OF_xref_from_node(node));
+ if (sc->pic == NULL) {
device_printf(dev, "could not register PIC\n");
goto fail;
}
@@ -314,7 +316,7 @@
return (0);
fail_pic:
- intr_pic_deregister(dev, OF_xref_from_node(node));
+ intr_pic_deregister(sc->pic);
fail:
if(sc->intrhand != NULL)
bus_teardown_intr(dev, sc->res[1], sc->intrhand);
@@ -330,7 +332,7 @@
phandle_t node;
node = ofw_bus_get_node(dev);
- intr_pic_deregister(dev, OF_xref_from_node(node));
+ intr_pic_deregister(sc->pic);
if (sc->intrhand != NULL)
bus_teardown_intr(dev, sc->res[1], sc->intrhand);
bus_release_resources(dev, mtk_gpio_spec, sc->res);
Index: sys/mips/mediatek/mtk_intr_gic.c
===================================================================
--- sys/mips/mediatek/mtk_intr_gic.c
+++ sys/mips/mediatek/mtk_intr_gic.c
@@ -84,6 +84,7 @@
struct mtk_gic_softc {
device_t gic_dev;
+ struct intr_pic * gic_pic;
void * gic_intrhand;
struct resource * gic_res[2];
struct mtk_gic_irqsrc gic_irqs[MTK_NIRQS];
@@ -213,7 +214,8 @@
* Now, when everything is initialized, it's right time to
* register interrupt controller to interrupt framefork.
*/
- if (intr_pic_register(dev, xref) != 0) {
+ sc->gic_pic = intr_pic_register(dev, xref);
+ if (sc->gic_pic == NULL) {
device_printf(dev, "could not register PIC\n");
goto cleanup;
}
Index: sys/mips/mediatek/mtk_intr_v1.c
===================================================================
--- sys/mips/mediatek/mtk_intr_v1.c
+++ sys/mips/mediatek/mtk_intr_v1.c
@@ -75,6 +75,7 @@
struct mtk_pic_softc {
device_t pic_dev;
+ struct intr_pic * pic;
void * pic_intrhand;
struct resource * pic_res[2];
struct mtk_pic_irqsrc pic_irqs[MTK_NIRQS];
@@ -201,7 +202,8 @@
* Now, when everything is initialized, it's right time to
* register interrupt controller to interrupt framefork.
*/
- if (intr_pic_register(dev, xref) != 0) {
+ sc->pic = intr_pic_register(dev, xref);
+ if (sc->pic == NULL) {
device_printf(dev, "could not register PIC\n");
goto cleanup;
}
@@ -209,7 +211,7 @@
if (bus_setup_intr(dev, sc->pic_res[1], INTR_TYPE_CLK,
mtk_pic_intr, NULL, sc, &sc->pic_intrhand)) {
device_printf(dev, "could not setup irq handler\n");
- intr_pic_deregister(dev, xref);
+ intr_pic_deregister(sc->pic);
goto cleanup;
}
return (0);
Index: sys/mips/mediatek/mtk_intr_v2.c
===================================================================
--- sys/mips/mediatek/mtk_intr_v2.c
+++ sys/mips/mediatek/mtk_intr_v2.c
@@ -75,6 +75,7 @@
struct mtk_pic_softc {
device_t pic_dev;
+ struct intr_pic * pic;
void * pic_intrhand;
struct resource * pic_res[2];
struct mtk_pic_irqsrc pic_irqs[MTK_NIRQS];
@@ -196,7 +197,8 @@
* Now, when everything is initialized, it's right time to
* register interrupt controller to interrupt framefork.
*/
- if (intr_pic_register(dev, xref) != 0) {
+ sc->pic = intr_pic_register(dev, xref);
+ if (sc->pic == NULL) {
device_printf(dev, "could not register PIC\n");
goto cleanup;
}
@@ -204,7 +206,7 @@
if (bus_setup_intr(dev, sc->pic_res[1], INTR_TYPE_CLK,
mtk_pic_intr, NULL, sc, &sc->pic_intrhand)) {
device_printf(dev, "could not setup irq handler\n");
- intr_pic_deregister(dev, xref);
+ intr_pic_deregister(sc->pic);
goto cleanup;
}
return (0);
Index: sys/mips/mediatek/mtk_pcie.c
===================================================================
--- sys/mips/mediatek/mtk_pcie.c
+++ sys/mips/mediatek/mtk_pcie.c
@@ -229,6 +229,7 @@
{
struct mtk_pci_softc *sc = device_get_softc(dev);
struct mtk_pci_range io_space, mem_space;
+ struct intr_pic *pic;
phandle_t node;
intptr_t xref;
int i, rid;
@@ -318,7 +319,8 @@
}
/* Register ourselves as an interrupt controller */
- if (intr_pic_register(dev, xref) != 0) {
+ pic = intr_pic_register(dev, xref);
+ if (pic == NULL) {
device_printf(dev, "could not register PIC\n");
goto cleanup_rman;
}
@@ -350,7 +352,7 @@
cleanup:
#ifdef notyet
- intr_pic_unregister(dev, xref);
+ intr_pic_unregister(pic);
#endif
for (i = 1; i <= sc->sc_num_irq; i++) {
if (sc->pci_intrhand[i - 1] != NULL)
Index: sys/mips/mips/mips_pic.c
===================================================================
--- sys/mips/mips/mips_pic.c
+++ sys/mips/mips/mips_pic.c
@@ -79,6 +79,7 @@
struct mips_pic_softc {
device_t pic_dev;
+ struct intr_pic * pic;
struct mips_pic_irqsrc pic_irqs[NREAL_IRQS];
struct rman pic_irq_rman;
struct mtx mutex;
@@ -223,15 +224,16 @@
* Now, when everything is initialized, it's right time to
* register interrupt controller to interrupt framefork.
*/
- if (intr_pic_register(dev, xref) != 0) {
+ sc->pic = intr_pic_register(dev, xref);
+ if (sc->pic == NULL) {
device_printf(dev, "could not register PIC\n");
goto cleanup;
}
/* Claim our root controller role */
- if (intr_pic_claim_root(dev, xref, mips_pic_intr, sc, 0) != 0) {
+ if (intr_pic_claim_root(sc->pic, mips_pic_intr, sc, 0) != 0) {
device_printf(dev, "could not set PIC as a root\n");
- intr_pic_deregister(dev, xref);
+ intr_pic_deregister(sc->pic);
goto cleanup;
}
Index: sys/sys/intr.h
===================================================================
--- sys/sys/intr.h
+++ sys/sys/intr.h
@@ -34,6 +34,8 @@
#define INTR_IRQ_INVALID 0xFFFFFFFF
+struct intr_pic;
+
enum intr_map_data_type {
INTR_MAP_DATA_ACPI,
INTR_MAP_DATA_FDT,
@@ -110,9 +112,9 @@
int intr_isrc_dispatch(struct intr_irqsrc *, struct trapframe *);
u_int intr_irq_next_cpu(u_int current_cpu, cpuset_t *cpumask);
-int intr_pic_register(device_t, intptr_t);
-int intr_pic_deregister(device_t, intptr_t);
-int intr_pic_claim_root(device_t, intptr_t, intr_irq_filter_t *, void *, u_int);
+struct intr_pic *intr_pic_register(device_t, intptr_t);
+int intr_pic_deregister(struct intr_pic *);
+int intr_pic_claim_root(struct intr_pic *, intr_irq_filter_t *, void *, u_int);
extern device_t intr_irq_root_dev;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 6, 8:45 AM (9 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28272411
Default Alt Text
D6304.1775465102.diff (19 KB)
Attached To
Mode
D6304: Pass interrupt controller drivers their intr_pic pointer
Attached
Detach File
Event Timeline
Log In to Comment