PERFORCE change 115344 for review
Paolo Pisati
piso at FreeBSD.org
Mon Mar 5 17:17:31 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=115344
Change 115344 by piso at piso_longino on 2007/03/05 17:16:31
Restore ability to use filter+ithread handler for fhc,
psycho and sbus.
Affected files ...
.. //depot/projects/soc2006/intr_filter/sparc64/fhc/fhc.c#6 edit
.. //depot/projects/soc2006/intr_filter/sparc64/pci/psycho.c#12 edit
.. //depot/projects/soc2006/intr_filter/sparc64/sbus/sbus.c#10 edit
Differences ...
==== //depot/projects/soc2006/intr_filter/sparc64/fhc/fhc.c#6 (text+ko) ====
@@ -51,7 +51,7 @@
struct fhc_clr {
driver_filter_t *fc_filter;
- driver_filter_t *fc_func;
+ driver_intr_t *fc_func;
void *fc_arg;
void *fc_cookie;
bus_space_tag_t fc_bt;
@@ -64,7 +64,7 @@
};
static int fhc_filter_stub(void *);
-static int fhc_intr_stub(void *);
+static void fhc_intr_stub(void *);
static void fhc_led_func(void *, int);
static int fhc_print_res(struct fhc_devinfo *);
@@ -219,7 +219,7 @@
long vec;
uint32_t inr;
- if (filt != NULL && func != NULL)
+ if (filter != NULL && func != NULL)
return (EINVAL);
sc = device_get_softc(bus);
@@ -244,7 +244,7 @@
if (fc == NULL)
return (0);
fc->fc_filter = filter;
- fc->fc_func = (filt != NULL) ? filt : (driver_filter_t *)func;
+ fc->fc_func = func;
fc->fc_arg = arg;
fc->fc_bt = bt;
fc->fc_bh = bh;
@@ -298,12 +298,12 @@
return (res);
}
+void
fhc_intr_stub(void *arg)
{
struct fhc_clr *fc = arg;
fc->fc_func(fc->fc_arg);
- return (FILTER_HANDLED);
}
struct resource *
==== //depot/projects/soc2006/intr_filter/sparc64/pci/psycho.c#12 (text+ko) ====
@@ -85,7 +85,7 @@
static int psycho_find_intrmap(struct psycho_softc *, int, bus_addr_t *,
bus_addr_t *, u_long *);
static int psycho_filter_stub(void *);
-static int psycho_intr_stub(void *);
+static void psycho_intr_stub(void *);
static bus_space_tag_t psycho_alloc_bus_tag(struct psycho_softc *, int);
/* Interrupt handlers */
@@ -93,11 +93,7 @@
static int psycho_ce(void *);
static int psycho_pci_bus(void *);
static
-#ifdef DEBUGGER_ON_POWERFAIL
int
-#else
-void
-#endif
psycho_powerfail(void *);
static int psycho_overtemp(void *);
#ifdef PSYCHO_MAP_WAKEUP
@@ -178,7 +174,7 @@
struct psycho_softc *pci_sc;
bus_addr_t pci_clr; /* clear register */
driver_filter_t *pci_filter;
- driver_filter_t *pci_handler; /* handler to call */
+ driver_intr_t *pci_handler; /* handler to call */
void *pci_arg; /* argument for the handler */
void *pci_cookie; /* parent bus int. cookie */
device_t pci_ppb; /* farest PCI-PCI bridge */
@@ -709,8 +705,8 @@
&sc->sc_ihand[index]);
else
res = bus_setup_intr(sc->sc_dev, sc->sc_irq_res[index],
- INTR_TYPE_MISC | iflags, NULL, handler, sc,
- &sc->sc_ihand[index]);
+ INTR_TYPE_MISC | iflags, NULL, (driver_intr_t *)handler,
+ sc, &sc->sc_ihand[index]);
if (res != 0)
panic("%s: failed to get interrupt", __func__);
PSYCHO_WRITE8(sc, map, INTMAP_ENABLE(mr, PCPU_GET(mid)));
@@ -822,11 +818,7 @@
}
static
-#ifdef DEBUGGER_ON_POWERFAIL
int
-#else
-void
-#endif
psycho_powerfail(void *arg)
{
@@ -835,12 +827,12 @@
kdb_enter("powerfail");
PSYCHO_WRITE8(sc, PSR_POWER_INT_CLR, 0);
- return(FILTER_HANDLED);
+ return (FILTER_HANDLED);
#else
printf("Power Failure Detected: Shutting down NOW.\n");
shutdown_nice(0);
+ return (FILTER_HANDLED);
#endif
- return (FILTER_HANDLED);
}
static int
@@ -1035,7 +1027,7 @@
}
/* Write to the correct clr register, and call the actual handler. */
-static int
+static void
psycho_intr_stub(void *arg)
{
struct psycho_clr *pc = arg;
@@ -1046,7 +1038,6 @@
(void)PSYCHO_READ8(pc->pci_sc, PSR_DMA_WRITE_SYNC);
}
pc->pci_handler(pc->pci_arg);
- return (FILTER_HANDLED);
}
static int
@@ -1067,7 +1058,7 @@
uint64_t mr;
int error, ino;
- if (filt != NULL && intr != NULL)
+ if (filter != NULL && intr != NULL)
return (EINVAL);
sc = device_get_softc(dev);
@@ -1100,7 +1091,7 @@
pc->pci_sc = sc;
pc->pci_arg = arg;
pc->pci_filter = filter;
- pc->pci_handler = (filt != NULL) ? filt : (driver_filter_t *)intr;
+ pc->pci_handler = intr;
pc->pci_clr = intrclrptr;
/*
==== //depot/projects/soc2006/intr_filter/sparc64/sbus/sbus.c#10 (text+ko) ====
@@ -182,7 +182,7 @@
struct sbus_softc *scl_sc;
bus_addr_t scl_clr; /* clear register */
driver_filter_t *scl_filter;
- driver_filter_t *scl_handler; /* handler to call */
+ driver_intr_t *scl_handler; /* handler to call */
void *scl_arg; /* argument for the handler */
void *scl_cookie; /* parent bus int. cookie */
};
@@ -211,7 +211,7 @@
phandle_t);
static void sbus_destroy_dinfo(struct sbus_devinfo *);
static int sbus_filter_stub(void *);
-static int sbus_intr_stub(void *);
+static void sbus_intr_stub(void *);
static bus_space_tag_t sbus_alloc_bustag(struct sbus_softc *);
static int sbus_overtemp(void *);
static int sbus_pwrfail(void *);
@@ -654,14 +654,13 @@
}
/* Write to the correct clr register, and call the actual handler. */
-static int
+static void
sbus_intr_stub(void *arg)
{
struct sbus_clr *scl;
scl = (struct sbus_clr *)arg;
scl->scl_handler(scl->scl_arg);
- return (FILTER_HANDLED);
}
static int
@@ -716,8 +715,8 @@
scl->scl_sc = sc;
scl->scl_arg = arg;
- scl->scl_filter = filter;
- scl->scl_handler = (filt != NULL) ? filt : (driver_filter_t *)intr;
+ scl->scl_filter = filt;
+ scl->scl_handler = intr;
scl->scl_clr = intrclrptr;
/* Disable the interrupt while we fiddle with it */
SYSIO_WRITE8(sc, intrmapptr, intrmap & ~INTMAP_V);
More information about the p4-projects
mailing list