Pass a device name to {tc,tcds,ioasic}_intr_establish in order to get
authormiod <miod@openbsd.org>
Sat, 9 Aug 2008 16:42:29 +0000 (16:42 +0000)
committermiod <miod@openbsd.org>
Sat, 9 Aug 2008 16:42:29 +0000 (16:42 +0000)
meaningful names associated to the interrupt counters.

16 files changed:
sys/arch/alpha/tc/cfb.c
sys/arch/alpha/tc/ioasic.c
sys/arch/alpha/tc/scc.c
sys/arch/alpha/tc/tc_3000_300.c
sys/arch/alpha/tc/tc_3000_500.c
sys/arch/alpha/tc/tc_conf.h
sys/dev/tc/asc_tc.c
sys/dev/tc/asc_tcds.c
sys/dev/tc/if_fta.c
sys/dev/tc/if_le_ioasic.c
sys/dev/tc/if_le_tc.c
sys/dev/tc/ioasicvar.h
sys/dev/tc/tc.c
sys/dev/tc/tcds.c
sys/dev/tc/tcdsvar.h
sys/dev/tc/tcvar.h

index f99dc77..05b3789 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: cfb.c,v 1.19 2007/11/06 18:20:05 miod Exp $   */
+/*     $OpenBSD: cfb.c,v 1.20 2008/08/09 16:42:29 miod Exp $   */
 /*     $NetBSD: cfb.c,v 1.7 1996/12/05 01:39:39 cgd Exp $      */
 
 /*
@@ -219,7 +219,8 @@ cfbattach(parent, self, aux)
            sc->sc_dc->dc_depth);
 
        /* Establish an interrupt handler, and clear any pending interrupts */
-        tc_intr_establish(parent, ta->ta_cookie, IPL_TTY, cfbintr, sc);
+        tc_intr_establish(parent, ta->ta_cookie, IPL_TTY, cfbintr, sc,
+           self->dv_xname);
        *(volatile u_int32_t *)(sc->sc_dc->dc_vaddr + CFB_IREQCTRL_OFFSET) = 0;
 
        /* initialize the raster */
index cd3dc89..b903314 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ioasic.c,v 1.14 2008/06/26 05:42:09 ray Exp $ */
+/* $OpenBSD: ioasic.c,v 1.15 2008/08/09 16:42:29 miod Exp $ */
 /* $NetBSD: ioasic.c,v 1.34 2000/07/18 06:10:06 thorpej Exp $ */
 
 /*-
@@ -117,7 +117,6 @@ struct ioasicintr {
        int     (*iai_func)(void *);
        void    *iai_arg;
        struct evcount iai_count;
-       char    iai_name[16];
 } ioasicintrs[IOASIC_NCOOKIES];
 
 tc_addr_t ioasic_base;         /* XXX XXX XXX */
@@ -195,12 +194,9 @@ ioasicattach(parent, self, aux)
        for (i = 0; i < IOASIC_NCOOKIES; i++) {
                ioasicintrs[i].iai_func = ioasic_intrnull;
                ioasicintrs[i].iai_arg = (void *)i;
-               snprintf(ioasicintrs[i].iai_name,
-                   sizeof ioasicintrs[i].iai_name, "ioasic slot %u", i);
-               evcount_attach(&ioasicintrs[i].iai_count,
-                   ioasicintrs[i].iai_name, NULL, &evcount_intr);
        }
-       tc_intr_establish(parent, ta->ta_cookie, IPL_NONE, ioasic_intr, sc);
+       tc_intr_establish(parent, ta->ta_cookie, IPL_NONE, ioasic_intr, sc,
+           NULL);
 
        /*
         * Try to configure each device.
@@ -209,11 +205,12 @@ ioasicattach(parent, self, aux)
 }
 
 void
-ioasic_intr_establish(ioa, cookie, level, func, arg)
+ioasic_intr_establish(ioa, cookie, level, func, arg, name)
        struct device *ioa;
        void *cookie, *arg;
        int level;
        int (*func)(void *);
+       const char *name;
 {
        struct ioasic_softc *sc = (void *)ioasic_cd.cd_devs[0];
        u_long dev, i, imsk;
@@ -228,6 +225,7 @@ ioasic_intr_establish(ioa, cookie, level, func, arg)
 
        ioasicintrs[dev].iai_func = func;
        ioasicintrs[dev].iai_arg = arg;
+       evcount_attach(&ioasicintrs[dev].iai_count, name, NULL, &evcount_intr);
 
        /* Enable interrupts for the device. */
        for (i = 0; i < ioasic_ndevs; i++)
@@ -270,6 +268,7 @@ ioasic_intr_disestablish(ioa, cookie)
 
        ioasicintrs[dev].iai_func = ioasic_intrnull;
        ioasicintrs[dev].iai_arg = (void *)dev;
+       evcount_detach(&ioasicintrs[dev].iai_count);
 }
 
 int
index 335a0de..7111bf8 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: scc.c,v 1.21 2007/11/06 18:20:05 miod Exp $ */
+/* $OpenBSD: scc.c,v 1.22 2008/08/09 16:42:29 miod Exp $ */
 /* $NetBSD: scc.c,v 1.58 2002/03/17 19:40:27 atatat Exp $ */
 
 /*
@@ -310,7 +310,7 @@ sccattach(parent, self, aux)
 
        /* Register the interrupt handler. */
        ioasic_intr_establish(parent, d->iada_cookie, IPL_TTY,
-           sccintr, (void *)sc);
+           sccintr, (void *)sc, self->dv_xname);
 
        /*
         * For a remote console, wait a while for previous output to
index 8260f51..a8b507f 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tc_3000_300.c,v 1.13 2007/11/06 18:20:05 miod Exp $ */
+/* $OpenBSD: tc_3000_300.c,v 1.14 2008/08/09 16:42:29 miod Exp $ */
 /* $NetBSD: tc_3000_300.c,v 1.26 2001/07/27 00:25:21 thorpej Exp $ */
 
 /*
@@ -85,7 +85,6 @@ struct tcintr {
        int     (*tci_func)(void *);
        void    *tci_arg;
        struct evcount tci_count;
-       char    tci_name[12];
 } tc_3000_300_intr[TC_3000_300_NCOOKIES];
 
 void
@@ -106,19 +105,16 @@ tc_3000_300_intr_setup()
        for (i = 0; i < TC_3000_300_NCOOKIES; i++) {
                 tc_3000_300_intr[i].tci_func = tc_3000_300_intrnull;
                 tc_3000_300_intr[i].tci_arg = (void *)i;
-               snprintf(tc_3000_300_intr[i].tci_name,
-                   sizeof tc_3000_300_intr[i].tci_name, "tc slot %u", i);
-               evcount_attach(&tc_3000_300_intr[i].tci_count,
-                   tc_3000_300_intr[i].tci_name, NULL, &evcount_intr);
        }
 }
 
 void
-tc_3000_300_intr_establish(tcadev, cookie, level, func, arg)
+tc_3000_300_intr_establish(tcadev, cookie, level, func, arg, name)
        struct device *tcadev;
        void *cookie, *arg;
        int level;
        int (*func)(void *);
+       const char *name;
 {
        volatile u_int32_t *imskp;
        u_long dev = (u_long)cookie;
@@ -132,6 +128,9 @@ tc_3000_300_intr_establish(tcadev, cookie, level, func, arg)
 
        tc_3000_300_intr[dev].tci_func = func;
        tc_3000_300_intr[dev].tci_arg = arg;
+       if (name != NULL)
+               evcount_attach(&tc_3000_300_intr[dev].tci_count,
+                   name, NULL, &evcount_intr);
 
        imskp = (volatile u_int32_t *)(DEC_3000_300_IOASIC_ADDR + IOASIC_IMSK);
        switch (dev) {
@@ -178,6 +177,8 @@ tc_3000_300_intr_disestablish(tcadev, cookie)
 
        tc_3000_300_intr[dev].tci_func = tc_3000_300_intrnull;
        tc_3000_300_intr[dev].tci_arg = (void *)dev;
+       if (tc_3000_300_intr[dev].tci_count.ec_parent != NULL)
+               evcount_detach(&tc_3000_300_intr[dev].tci_count);
 }
 
 int
index d82ec73..a85ed01 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tc_3000_500.c,v 1.14 2007/11/06 18:20:05 miod Exp $ */
+/* $OpenBSD: tc_3000_500.c,v 1.15 2008/08/09 16:42:29 miod Exp $ */
 /* $NetBSD: tc_3000_500.c,v 1.24 2001/07/27 00:25:21 thorpej Exp $ */
 
 /*
 extern int     sfb_cnattach(tc_addr_t);
 #endif
 
-void   tc_3000_500_intr_setup(void);
-void   tc_3000_500_intr_establish(struct device *, void *,
-           int, int (*)(void *), void *);
-void   tc_3000_500_intr_disestablish(struct device *, void *);
-void   tc_3000_500_iointr(void *, unsigned long);
-
 int    tc_3000_500_intrnull(void *);
 int    tc_3000_500_fb_cnattach(u_int64_t);
 
@@ -104,7 +98,6 @@ struct tcintr {
        int     (*tci_func)(void *);
        void    *tci_arg;
        struct evcount tci_count;
-       char    tci_name[12];
 } tc_3000_500_intr[TC_3000_500_NCOOKIES];
 
 u_int32_t tc_3000_500_imask;   /* intrs we want to ignore; mirrors IMR. */
@@ -130,19 +123,16 @@ tc_3000_500_intr_setup()
         for (i = 0; i < TC_3000_500_NCOOKIES; i++) {
                tc_3000_500_intr[i].tci_func = tc_3000_500_intrnull;
                tc_3000_500_intr[i].tci_arg = (void *)i;
-               snprintf(tc_3000_500_intr[i].tci_name,
-                   sizeof tc_3000_500_intr[i].tci_name, "tc slot %u", i);
-               evcount_attach(&tc_3000_500_intr[i].tci_count,
-                   tc_3000_500_intr[i].tci_name, NULL, &evcount_intr);
         }
 }
 
 void
-tc_3000_500_intr_establish(tcadev, cookie, level, func, arg)
+tc_3000_500_intr_establish(tcadev, cookie, level, func, arg, name)
        struct device *tcadev;
        void *cookie, *arg;
        int level;
        int (*func)(void *);
+       const char *name;
 {
        u_long dev = (u_long)cookie;
 
@@ -155,6 +145,9 @@ tc_3000_500_intr_establish(tcadev, cookie, level, func, arg)
 
        tc_3000_500_intr[dev].tci_func = func;
        tc_3000_500_intr[dev].tci_arg = arg;
+       if (name != NULL)
+               evcount_attach(&tc_3000_500_intr[dev].tci_count,
+                   name, NULL, &evcount_intr);
 
        tc_3000_500_imask &= ~tc_3000_500_intrbits[dev];
        *(volatile u_int32_t *)TC_3000_500_IMR_WRITE = tc_3000_500_imask;
@@ -182,6 +175,8 @@ tc_3000_500_intr_disestablish(tcadev, cookie)
 
        tc_3000_500_intr[dev].tci_func = tc_3000_500_intrnull;
        tc_3000_500_intr[dev].tci_arg = (void *)dev;
+       if (tc_3000_500_intr[dev].tci_count.ec_parent != NULL)
+               evcount_detach(&tc_3000_500_intr[dev].tci_count);
 }
 
 int
index 3f813b7..00dd671 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tc_conf.h,v 1.9 2007/11/06 18:20:05 miod Exp $ */
+/* $OpenBSD: tc_conf.h,v 1.10 2008/08/09 16:42:29 miod Exp $ */
 /* $NetBSD: tc_conf.h,v 1.10 2000/06/04 19:14:29 cgd Exp $ */
 
 /*
@@ -39,7 +39,7 @@ extern void   tc_3000_500_intr_setup(void);
 extern void    tc_3000_500_iointr(void *, unsigned long);
 
 extern void    tc_3000_500_intr_establish(struct device *, void *,
-                   int, int (*)(void *), void *);
+                   int, int (*)(void *), void *, const char *);
 extern void    tc_3000_500_intr_disestablish(struct device *, void *);
 
 extern int     tc_3000_500_nslots;
@@ -57,7 +57,7 @@ extern void   tc_3000_300_intr_setup(void);
 extern void    tc_3000_300_iointr(void *, unsigned long);
 
 extern void    tc_3000_300_intr_establish(struct device *, void *,
-                   int, int (*)(void *), void *);
+                   int, int (*)(void *), void *, const char *);
 extern void    tc_3000_300_intr_disestablish(struct device *, void *);
 
 extern int     tc_3000_300_nslots;
index bc9540d..af9f093 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: asc_tc.c,v 1.8 2008/06/26 05:42:18 ray Exp $ */
+/* $OpenBSD: asc_tc.c,v 1.9 2008/08/09 16:42:30 miod Exp $ */
 /* $NetBSD: asc_tc.c,v 1.19 2001/11/15 09:48:19 lukem Exp $ */
 
 /*-
@@ -137,7 +137,8 @@ asc_tc_attach(parent, self, aux)
        }
        asc->sc_base = (caddr_t)ta->ta_addr;    /* XXX XXX XXX */
 
-       tc_intr_establish(parent, ta->ta_cookie, IPL_BIO, ncr53c9x_intr, sc);
+       tc_intr_establish(parent, ta->ta_cookie, IPL_BIO, ncr53c9x_intr, sc,
+           self->dv_xname);
        
        sc->sc_id = 7;
        sc->sc_freq = (ta->ta_busspeed) ? 25000000 : 12500000;
index 0a6eca5..8ccd545 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: asc_tcds.c,v 1.5 2008/06/26 05:42:18 ray Exp $ */
+/* $OpenBSD: asc_tcds.c,v 1.6 2008/08/09 16:42:30 miod Exp $ */
 /* $NetBSD: asc_tcds.c,v 1.5 2001/11/15 09:48:19 lukem Exp $ */
 
 /*-
@@ -168,7 +168,8 @@ asc_tcds_attach(parent, self, aux)
        /* gimme MHz */
        sc->sc_freq /= 1000000;
 
-       tcds_intr_establish(parent, tcdsdev->tcdsda_chip, ncr53c9x_intr, sc);
+       tcds_intr_establish(parent, tcdsdev->tcdsda_chip, ncr53c9x_intr, sc,
+           self->dv_xname);
 
        /*
         * XXX More of this should be in ncr53c9x_attach(), but
index 343f889..d93fd60 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_fta.c,v 1.14 2007/11/06 18:20:07 miod Exp $        */
+/*     $OpenBSD: if_fta.c,v 1.15 2008/08/09 16:42:30 miod Exp $        */
 /*     $NetBSD: if_fta.c,v 1.7 1996/10/22 21:37:26 cgd Exp $   */
 
 /*-
@@ -114,7 +114,7 @@ pdq_tc_attach(parent, self, aux)
        pdq_ifattach(sc, NULL);
 
        tc_intr_establish(parent, ta->ta_cookie, IPL_NET,
-           (int (*)(void *)) pdq_interrupt, sc->sc_pdq);
+           (int (*)(void *)) pdq_interrupt, sc->sc_pdq, self->dv_xname);
 
        sc->sc_ats = shutdownhook_establish((void (*)(void *)) pdq_hwreset,
            sc->sc_pdq);
index b239b4b..fd1d021 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_le_ioasic.c,v 1.14 2007/11/06 18:20:07 miod Exp $  */
+/*     $OpenBSD: if_le_ioasic.c,v 1.15 2008/08/09 16:42:30 miod Exp $  */
 /*     $NetBSD: if_le_ioasic.c,v 1.18 2001/11/13 06:26:10 lukem Exp $  */
 
 /*
@@ -164,7 +164,7 @@ le_ioasic_attach(struct device *parent, struct device *self, void *aux)
                + IOASIC_SLOT_2_START);
 
        ioasic_intr_establish(parent, d->iada_cookie, IPL_NET,
-           am7990_intr, sc);
+           am7990_intr, sc, self->dv_xname);
        return;
 
  bad:
index e8beb43..f3df7ea 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_le_tc.c,v 1.9 2007/11/06 18:20:07 miod Exp $       */
+/*     $OpenBSD: if_le_tc.c,v 1.10 2008/08/09 16:42:30 miod Exp $      */
 /*     $NetBSD: if_le_tc.c,v 1.12 2001/11/13 06:26:10 lukem Exp $      */
 
 /*
@@ -105,5 +105,6 @@ le_tc_attach(struct device *parent, struct device *self, void *aux)
        dec_le_common_attach(&lesc->sc_am7990,
                             (u_char *)(d->ta_addr + LE_OFFSET_ROM + 2));
 
-       tc_intr_establish(parent, d->ta_cookie, IPL_NET, am7990_intr, sc);
+       tc_intr_establish(parent, d->ta_cookie, IPL_NET, am7990_intr, sc,
+           self->dv_xname);
 }
index 01212d1..f7be0c7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ioasicvar.h,v 1.8 2008/07/30 22:02:09 miod Exp $      */
+/*     $OpenBSD: ioasicvar.h,v 1.9 2008/08/09 16:42:30 miod Exp $      */
 /*     $NetBSD: ioasicvar.h,v 1.14 2000/10/17 09:45:49 nisimura Exp $  */
 
 /*
@@ -67,7 +67,7 @@ extern struct cfdriver ioasic_cd;
 extern tc_addr_t ioasic_base;
 
 void    ioasic_intr_establish(struct device *, void *,
-           int, int (*)(void *), void *);
+           int, int (*)(void *), void *, const char *);
 void    ioasic_intr_disestablish(struct device *, void *);
 int    ioasic_submatch(void *, struct ioasicdev_attach_args *);
 void   ioasic_attach_devs(struct ioasic_softc *,
index 335d089..c2aa1ab 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: tc.c,v 1.17 2007/06/25 14:13:40 tom Exp $     */
+/*     $OpenBSD: tc.c,v 1.18 2008/08/09 16:42:30 miod Exp $    */
 /*     $NetBSD: tc.c,v 1.29 2001/11/13 06:26:10 lukem Exp $    */
 
 /*
@@ -261,15 +261,16 @@ tc_checkslot(slotbase, namep)
 }
 
 void
-tc_intr_establish(dev, cookie, level, handler, arg)
+tc_intr_establish(dev, cookie, level, handler, arg, name)
        struct device *dev;
        void *cookie, *arg;
        int level;
        int (*handler)(void *);
+       const char *name;
 {
        struct tc_softc *sc = tc_cd.cd_devs[0];
 
-       (*sc->sc_intr_establish)(dev, cookie, level, handler, arg);
+       (*sc->sc_intr_establish)(dev, cookie, level, handler, arg, name);
 }
 
 void
index 82ec0e5..c217943 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcds.c,v 1.6 2008/06/26 05:42:18 ray Exp $ */
+/* $OpenBSD: tcds.c,v 1.7 2008/08/09 16:42:30 miod Exp $ */
 /* $NetBSD: tcds.c,v 1.3 2001/11/13 06:26:10 lukem Exp $ */
 
 /*-
@@ -199,7 +199,8 @@ tcdsattach(parent, self, aux)
 
        sc->sc_cookie = ta->ta_cookie;
 
-       tc_intr_establish(parent, sc->sc_cookie, IPL_BIO, tcds_intr, sc);
+       tc_intr_establish(parent, sc->sc_cookie, IPL_BIO, tcds_intr, sc,
+           self->dv_xname);
 
        /*
         * XXX
@@ -225,9 +226,6 @@ tcdsattach(parent, self, aux)
                slotc = &sc->sc_slots[i];
                bzero(slotc, sizeof *slotc);    /* clear everything */
 
-               evcount_attach(&slotc->sc_count, sc->sc_dv.dv_xname, NULL,
-                   &evcount_intr);
-
                slotc->sc_slot = i;
                slotc->sc_bst = sc->sc_bst;
                slotc->sc_bsh = sc->sc_bsh;
@@ -336,11 +334,12 @@ tcdsprint(aux, pnp)
 }
 
 void
-tcds_intr_establish(tcds, slot, func, arg)
+tcds_intr_establish(tcds, slot, func, arg, name)
        struct device *tcds;
        int slot;
        int (*func)(void *);
        void *arg;
+       const char *name;
 {
        struct tcds_softc *sc = (struct tcds_softc *)tcds;
 
@@ -349,6 +348,8 @@ tcds_intr_establish(tcds, slot, func, arg)
 
        sc->sc_slots[slot].sc_intrhand = func;
        sc->sc_slots[slot].sc_intrarg = arg;
+       evcount_attach(&sc->sc_slots[slot].sc_count, name, NULL, &evcount_intr);
+
        tcds_scsi_reset(&sc->sc_slots[slot]);
 }
 
@@ -365,6 +366,7 @@ tcds_intr_disestablish(tcds, slot)
 
        sc->sc_slots[slot].sc_intrhand = tcds_intrnull;
        sc->sc_slots[slot].sc_intrarg = (void *)(u_long)slot;
+       evcount_detach(&sc->sc_slots[slot].sc_count);
 
        tcds_dma_enable(&sc->sc_slots[slot], 0);
        tcds_scsi_enable(&sc->sc_slots[slot], 0);
index 261bcae..9aedc14 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcdsvar.h,v 1.3 2006/03/13 22:36:06 miod Exp $ */
+/* $OpenBSD: tcdsvar.h,v 1.4 2008/08/09 16:42:30 miod Exp $ */
 /* $NetBSD: tcdsvar.h,v 1.2 2001/08/22 05:00:27 nisimura Exp $ */
 
 /*
@@ -77,7 +77,7 @@ struct tcdsdev_attach_args {
  * TCDS functions.
  */
 void   tcds_intr_establish(struct device *, int,
-           int (*)(void *), void *);
+           int (*)(void *), void *, const char *);
 void   tcds_intr_disestablish(struct device *, int);
 void   tcds_dma_enable(struct tcds_slotconfig *, int);
 void   tcds_scsi_enable(struct tcds_slotconfig *, int);
index 5c1d72f..d5bd231 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcvar.h,v 1.13 2007/11/06 18:20:07 miod Exp $ */
+/* $OpenBSD: tcvar.h,v 1.14 2008/08/09 16:42:30 miod Exp $ */
 /* $NetBSD: tcvar.h,v 1.17 2000/06/04 19:15:15 cgd Exp $ */
 
 /*
@@ -51,7 +51,7 @@ struct tc_softc {
        struct tc_slotdesc *sc_slots;
 
        void    (*sc_intr_establish)(struct device *, void *,
-                       int, int (*)(void *), void *);
+                       int, int (*)(void *), void *, const char *);
        void    (*sc_intr_disestablish)(struct device *, void *);
        bus_dma_tag_t (*sc_get_dma_tag)(int);
 };
@@ -73,7 +73,7 @@ struct tcbus_attach_args {
 
        /* TC bus resource management; XXX will move elsewhere eventually. */
        void    (*tba_intr_establish)(struct device *, void *,
-                       int, int (*)(void *), void *);
+                       int, int (*)(void *), void *, const char *);
        void    (*tba_intr_disestablish)(struct device *, void *);
        bus_dma_tag_t (*tba_get_dma_tag)(int);
 };
@@ -121,7 +121,7 @@ int tc_checkslot(tc_addr_t, char *);
 void   tc_devinfo(const char *, char *, size_t);
 void   tcattach(struct device *, struct device *, void *);
 void   tc_intr_establish(struct device *, void *, int, int (*)(void *),
-           void *);
+           void *, const char *);
 void   tc_intr_disestablish(struct device *, void *);
 
 /*