From owner-p4-projects@FreeBSD.ORG Sun Nov 16 21:37:07 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2358916A4D0; Sun, 16 Nov 2003 21:37:07 -0800 (PST) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DAD3616A4CE for ; Sun, 16 Nov 2003 21:37:06 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id B717843FBF for ; Sun, 16 Nov 2003 21:37:05 -0800 (PST) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.9/8.12.9) with ESMTP id hAH5b5XJ072554 for ; Sun, 16 Nov 2003 21:37:05 -0800 (PST) (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.9/8.12.9/Submit) id hAH5b45m072551 for perforce@freebsd.org; Sun, 16 Nov 2003 21:37:05 -0800 (PST) (envelope-from peter@freebsd.org) Date: Sun, 16 Nov 2003 21:37:05 -0800 (PST) Message-Id: <200311170537.hAH5b45m072551@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Subject: PERFORCE change 42623 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Nov 2003 05:37:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=42623 Change 42623 by peter@peter_overcee on 2003/11/16 21:37:02 switch to a slightly lower impact version of the last change. Affected files ... .. //depot/projects/hammer/sys/alpha/alpha/interrupt.c#8 edit .. //depot/projects/hammer/sys/alpha/include/intr.h#4 edit .. //depot/projects/hammer/sys/alpha/isa/isa.c#7 edit .. //depot/projects/hammer/sys/alpha/mcbus/mcpcia.c#7 edit .. //depot/projects/hammer/sys/alpha/pci/apecs.c#5 edit .. //depot/projects/hammer/sys/alpha/pci/cia.c#5 edit .. //depot/projects/hammer/sys/alpha/pci/t2.c#6 edit .. //depot/projects/hammer/sys/alpha/pci/tsunami.c#5 edit .. //depot/projects/hammer/sys/alpha/tlsb/dwlpx.c#7 edit .. //depot/projects/hammer/sys/amd64/amd64/intr_machdep.c#11 edit .. //depot/projects/hammer/sys/i386/i386/intr_machdep.c#5 edit .. //depot/projects/hammer/sys/ia64/ia64/interrupt.c#11 edit .. //depot/projects/hammer/sys/kern/kern_intr.c#17 edit .. //depot/projects/hammer/sys/powerpc/include/intr_machdep.h#4 edit .. //depot/projects/hammer/sys/powerpc/powermac/hrowpic.c#3 edit .. //depot/projects/hammer/sys/powerpc/powerpc/intr_machdep.c#4 edit .. //depot/projects/hammer/sys/powerpc/powerpc/openpic.c#5 edit .. //depot/projects/hammer/sys/sparc64/sparc64/intr_machdep.c#7 edit .. //depot/projects/hammer/sys/sys/interrupt.h#6 edit Differences ... ==== //depot/projects/hammer/sys/alpha/alpha/interrupt.c#8 (text+ko) ==== @@ -321,13 +321,13 @@ return (mc_received); } -#define HASHVEC(vector) (((uintptr_t)(vector)) % 31) +#define HASHVEC(vector) ((vector) % 31) LIST_HEAD(alpha_intr_list, alpha_intr); struct alpha_intr { LIST_ENTRY(alpha_intr) list; /* chain handlers in this hash bucket */ - void *vector; /* vector to match */ + uintptr_t vector; /* vector to match */ struct ithd *ithd; /* interrupt thread */ volatile long *cntp; /* interrupt counter */ }; @@ -346,7 +346,7 @@ SYSINIT(ithds_init, SI_SUB_INTR, SI_ORDER_SECOND, ithds_init, NULL); int -alpha_setup_intr(const char *name, void *vector, driver_intr_t handler, void *arg, +alpha_setup_intr(const char *name, uintptr_t vector, driver_intr_t handler, void *arg, enum intr_type flags, void **cookiep, volatile long *cntp, void (*disable)(void *), void (*enable)(void *)) { @@ -411,8 +411,7 @@ * Walk the hash bucket for this vector looking for this vector's * interrupt thread. */ - for (i = LIST_FIRST(&alpha_intr_hash[h]); - i && i->vector != (void *)(uintptr_t)vector; + for (i = LIST_FIRST(&alpha_intr_hash[h]); i && i->vector != vector; i = LIST_NEXT(i, list)) ; /* nothing */ if (i == NULL) ==== //depot/projects/hammer/sys/alpha/include/intr.h#4 (text+ko) ==== @@ -31,7 +31,7 @@ extern struct mtx icu_lock; -int alpha_setup_intr(const char *name, void *vector, driver_intr_t handler, +int alpha_setup_intr(const char *name, uintptr_t vector, driver_intr_t handler, void *arg, enum intr_type flags, void **cookiep, volatile long *cntp, void (*disable)(void *), void (*enable)(void *)); int alpha_teardown_intr(void *cookie); ==== //depot/projects/hammer/sys/alpha/isa/isa.c#7 (text+ko) ==== @@ -310,9 +310,8 @@ */ static void -isa_disable_intr(void *cookie) +isa_disable_intr(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq; irq = (vector - 0x800) >> 4; @@ -326,9 +325,8 @@ } static void -isa_enable_intr(void *cookie) +isa_enable_intr(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq; irq = (vector - 0x800) >> 4; @@ -366,7 +364,7 @@ error = alpha_setup_intr( device_get_nameunit(child ? child : dev), - (void *)(uintptr_t)(0x800 + (irq->r_start << 4)), + 0x800 + (irq->r_start << 4), ((flags & INTR_FAST) ? isa_handle_fast_intr : isa_handle_intr), ii, flags, &ii->ih, &intrcnt[INTRCNT_ISA_IRQ + irq->r_start], ==== //depot/projects/hammer/sys/alpha/mcbus/mcpcia.c#7 (text+ko) ==== @@ -304,9 +304,8 @@ } static void -mcpcia_disable_intr_vec(void *cookie) +mcpcia_disable_intr_vec(uintptr_t vector) { - int vector = (uintptr_t)cookie; int mid, irq; struct mcpcia_softc *sc = mcpcia_root; @@ -347,9 +346,8 @@ } static void -mcpcia_enable_intr_vec(void *cookie) +mcpcia_enable_intr_vec(uintptr_t vector) { - int vector = (uintptr_t)cookie; int mid, irq; struct mcpcia_softc *sc = mcpcia_root; @@ -450,8 +448,7 @@ 2 * MCPCIA_VECWIDTH_PER_SLOT; } birq = irq + INTRCNT_KN300_IRQ; - error = alpha_setup_intr(device_get_nameunit(child), - (void *)(uintptr_t)h, + error = alpha_setup_intr(device_get_nameunit(child), h, intr, arg, flags, cp, &intrcnt[birq], mcpcia_disable_intr_vec, mcpcia_enable_intr_vec); if (error) ==== //depot/projects/hammer/sys/alpha/pci/apecs.c#5 (text+ko) ==== @@ -308,9 +308,8 @@ } static void -apecs_disable_intr(void *cookie) +apecs_disable_intr(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq; irq = (vector - 0x900) >> 4; @@ -320,9 +319,8 @@ } static void -apecs_enable_intr(void *cookie) +apecs_enable_intr(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq; irq = (vector - 0x900) >> 4; @@ -351,8 +349,7 @@ return error; error = alpha_setup_intr(device_get_nameunit(child ? child : dev), - (void *)(uintptr_t)(0x900 + (irq->r_start << 4)), - intr, arg, flags, cookiep, + 0x900 + (irq->r_start << 4), intr, arg, flags, cookiep, &intrcnt[INTRCNT_EB64PLUS_IRQ + irq->r_start], apecs_disable_intr, apecs_enable_intr); if (error) ==== //depot/projects/hammer/sys/alpha/pci/cia.c#5 (text+ko) ==== @@ -515,9 +515,8 @@ } static void -cia_disable_intr(void *cookie) +cia_disable_intr(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq; irq = (vector - 0x900) >> 4; @@ -527,9 +526,8 @@ } static void -cia_enable_intr(void *cookie) +cia_enable_intr(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq; irq = (vector - 0x900) >> 4; @@ -551,8 +549,7 @@ error = alpha_setup_intr( device_get_nameunit(child ? child : dev), - (void *)(uintptr_t)(0x900 + (irq->r_start << 4)), - intr, arg, flags, cookiep, + 0x900 + (irq->r_start << 4), intr, arg, flags, cookiep, &intrcnt[INTRCNT_EB164_IRQ + irq->r_start], cia_disable_intr, cia_enable_intr); if (error) ==== //depot/projects/hammer/sys/alpha/pci/t2.c#6 (text+ko) ==== @@ -457,9 +457,8 @@ } static void -t2_enable_vec(void *cookie) +t2_enable_vec(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq, hose; u_long IC_mask, scratch; @@ -492,9 +491,8 @@ } static void -t2_disable_vec(void *cookie) +t2_disable_vec(uintptr_t vector) { - int vector = (uintptr_t)cookie; int hose, irq; u_long scratch, IC_mask; @@ -565,14 +563,14 @@ return error; error = alpha_setup_intr(device_get_nameunit(child ? child : dev), - (void *)(uintptr_t)vector, intr, arg, flags, cookiep, + vector, intr, arg, flags, cookiep, &intrcnt[irq->r_start], t2_disable_vec, t2_enable_vec); if (error) return error; /* Enable interrupt */ - t2_enable_vec((void *)(uintptr_t)vector); + t2_enable_vec(vector); if (bootverbose != 0) device_printf(child, ==== //depot/projects/hammer/sys/alpha/pci/tsunami.c#5 (text+ko) ==== @@ -308,9 +308,8 @@ } static void -tsunami_disable_intr_vec(void *cookie) +tsunami_disable_intr_vec(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq; irq = (vector - 0x900) >> 4; @@ -320,9 +319,8 @@ } static void -tsunami_enable_intr_vec(void *cookie) +tsunami_enable_intr_vec(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq; irq = (vector - 0x900) >> 4; @@ -343,8 +341,7 @@ return error; error = alpha_setup_intr(device_get_nameunit(child ? child : dev), - (void *)(uintptr_t)(0x900 + (irq->r_start << 4)), - intr, arg, flags, cookiep, + 0x900 + (irq->r_start << 4), intr, arg, flags, cookiep, &intrcnt[INTRCNT_EB164_IRQ + irq->r_start], tsunami_disable_intr_vec, tsunami_enable_intr_vec); if (error) ==== //depot/projects/hammer/sys/alpha/tlsb/dwlpx.c#7 (text+ko) ==== @@ -392,7 +392,7 @@ vector = DWLPX_MVEC(ionode, hose, slot); error = alpha_setup_intr(device_get_nameunit(child ? child : dev), - (void *)(uintptr_t)vector, intr, arg, flags, cookiep, + vector, intr, arg, flags, cookiep, &intrcnt[INTRCNT_KN8AE_IRQ], NULL, NULL); if (error) return error; ==== //depot/projects/hammer/sys/amd64/amd64/intr_machdep.c#11 (text+ko) ==== @@ -57,7 +57,7 @@ #define MAX_STRAY_LOG 5 -typedef void (*mask_fn)(void *cookie); +typedef void (*mask_fn)(uintptr_t vector); static int intrcnt_index; static struct intsrc *interrupt_sources[NUM_IO_INTS]; @@ -81,19 +81,7 @@ vector = isrc->is_pic->pic_vector(isrc); if (interrupt_sources[vector] != NULL) return (EEXIST); - /* - * Ok, so this is kind of a nasty optimization that only works - * because sizeof(int) == sizeof(void *) on i386. If we passed - * in the actual vector to ithread_create and then used wrapper - * functions for disable_intsrc and enable_intsrc, then we'd - * have to go lookup in the table everytime we enabled/disabled - * the interrupt source. That involves looking at a lock, etc. - * and is just ugly. Instead, we cast the pointer to the intsrc - * to an int (yuck) and pass in the actual PIC methods meaning - * that when we enable/disable an interrupt we call the PIC - * methods directly. - */ - error = ithread_create(&isrc->is_ithread, isrc, 0, + error = ithread_create(&isrc->is_ithread, (uintptr_t)isrc, 0, (mask_fn)isrc->is_pic->pic_disable_source, (mask_fn)isrc->is_pic->pic_enable_source, "irq%d:", vector); if (error) ==== //depot/projects/hammer/sys/i386/i386/intr_machdep.c#5 (text+ko) ==== @@ -57,7 +57,7 @@ #define MAX_STRAY_LOG 5 -typedef void (*mask_fn)(void *cookie); +typedef void (*mask_fn)(uintptr_t vector); static int intrcnt_index; static struct intsrc *interrupt_sources[NUM_IO_INTS]; @@ -81,7 +81,7 @@ vector = isrc->is_pic->pic_vector(isrc); if (interrupt_sources[vector] != NULL) return (EEXIST); - error = ithread_create(&isrc->is_ithread, isrc, 0, + error = ithread_create(&isrc->is_ithread, (uintptr_t)isrc, 0, (mask_fn)isrc->is_pic->pic_disable_source, (mask_fn)isrc->is_pic->pic_enable_source, "irq%d:", vector); if (error) ==== //depot/projects/hammer/sys/ia64/ia64/interrupt.c#11 (text+ko) ==== @@ -263,9 +263,8 @@ SYSINIT(ithds_init, SI_SUB_INTR, SI_ORDER_SECOND, ithds_init, NULL); static void -ia64_send_eoi(void *cookie) +ia64_send_eoi(uintptr_t vector) { - int vector = (uintptr_t)cookie; int irq, i; irq = vector - IA64_HARDWARE_IRQ_BASE; @@ -312,8 +311,8 @@ memset(intrname, ' ', INTRNAME_LEN - 1); bcopy(name, intrname, strlen(name)); } - errcode = ithread_create(&i->ithd, (void *)(uintptr_t)vector, - 0, 0, ia64_send_eoi, "intr:"); + errcode = ithread_create(&i->ithd, vector, 0, 0, + ia64_send_eoi, "intr:"); if (errcode) { free(i, M_DEVBUF); return errcode; @@ -377,7 +376,7 @@ if ((ih->ih_flags & IH_FAST) != 0) { critical_enter(); ih->ih_handler(ih->ih_argument); - ia64_send_eoi((void *)(uintptr_t)vector); + ia64_send_eoi(vector); critical_exit(); return; } ==== //depot/projects/hammer/sys/kern/kern_intr.c#17 (text+ko) ==== @@ -58,7 +58,7 @@ struct int_entropy { struct proc *proc; - void *vector; + uintptr_t vector; }; void *vm_ih; @@ -169,8 +169,8 @@ } int -ithread_create(struct ithd **ithread, void *vector, int flags, - void (*disable)(void *), void (*enable)(void *), const char *fmt, ...) +ithread_create(struct ithd **ithread, uintptr_t vector, int flags, + void (*disable)(uintptr_t), void (*enable)(uintptr_t), const char *fmt, ...) { struct ithd *ithd; struct thread *td; @@ -435,7 +435,7 @@ if ((ithd->it_flags & IT_SOFT) == 0) return(EINVAL); } else { - error = ithread_create(&ithd, (void *)(uintptr_t)pri, IT_SOFT, NULL, NULL, + error = ithread_create(&ithd, pri, IT_SOFT, NULL, NULL, "swi%d:", pri); if (error) return (error); ==== //depot/projects/hammer/sys/powerpc/include/intr_machdep.h#4 (text+ko) ==== @@ -40,7 +40,7 @@ u_int ih_flags; }; -void intr_init(void (*)(void), int, void (*)(void *), void (*)(void *)); +void intr_init(void (*)(void), int, void (*)(uintptr_t), void (*)(uintptr_t)); void intr_setup(u_int, ih_func_t *, void *, u_int); int inthand_add(const char *, u_int, void (*)(void *), void *, int, void **); ==== //depot/projects/hammer/sys/powerpc/powermac/hrowpic.c#3 (text+ko) ==== @@ -94,8 +94,8 @@ * Local routines */ static void hrowpic_intr(void); -static void hrowpic_ext_enable_irq(void *); -static void hrowpic_ext_disable_irq(void *); +static void hrowpic_ext_enable_irq(uintptr_t); +static void hrowpic_ext_disable_irq(uintptr_t); static void hrowpic_toggle_irq(struct hrowpic_softc *sc, int, int); /* @@ -375,18 +375,14 @@ } static void -hrowpic_ext_enable_irq(void *cookie) +hrowpic_ext_enable_irq(uintptr_t irq) { - int irq = (uintptr_t)cookie; - hrowpic_toggle_irq(hpicsoftc, irq, 1); } static void -hrowpic_ext_disable_irq(void *cookie) +hrowpic_ext_disable_irq(uintptr_t irq) { - int irq = (uintptr_t)cookie; - hrowpic_toggle_irq(hpicsoftc, irq, 0); } ==== //depot/projects/hammer/sys/powerpc/powerpc/intr_machdep.c#4 (text+ko) ==== @@ -99,12 +99,12 @@ static ih_func_t intr_stray_handler; static ih_func_t sched_ithd; -static void (*irq_enable)(void *); -static void (*irq_disable)(void *); +static void (*irq_enable)(uintptr_t); +static void (*irq_disable)(uintptr_t); void -intr_init(void (*handler)(void), int nirq, void (*irq_e)(void *), - void (*irq_d)(void *)) +intr_init(void (*handler)(void), int nirq, void (*irq_e)(uintptr_t), + void (*irq_d)(uintptr_t)) { int i; u_int32_t msr; @@ -247,7 +247,7 @@ intr_handlers[irq].ih_func(intr_handlers[irq].ih_arg); if ((intr_handlers[irq].ih_flags & INTR_FAST) != 0) - irq_enable((void *)(uintptr_t)irq); + irq_enable(irq); } static void ==== //depot/projects/hammer/sys/powerpc/powerpc/openpic.c#5 (text+ko) ==== @@ -85,8 +85,8 @@ static void openpic_disable_irq(struct openpic_softc *, int); static void openpic_set_priority(struct openpic_softc *, int, int); static void openpic_intr(void); -static void irq_enable(void *); -static void irq_disable(void *); +static void irq_enable(uintptr_t); +static void irq_disable(uintptr_t); /* * Driver methods. @@ -476,17 +476,15 @@ } static void -irq_enable(void *cookie) +irq_enable(uintptr_t irq) { - int irq = (uintptr_t)cookie; openpic_enable_irq(softc, irq, IST_LEVEL); } static void -irq_disable(void *cookie) +irq_disable(uintptr_t irq) { - int irq = (uintptr_t)cookie; openpic_disable_irq(softc, irq); } ==== //depot/projects/hammer/sys/sparc64/sparc64/intr_machdep.c#7 (text+ko) ==== @@ -261,8 +261,8 @@ ithd = iv->iv_ithd; mtx_unlock_spin(&intr_table_lock); if (ithd == NULL) { - errcode = ithread_create(&ithd, (void *)(uintptr_t)vec, 0, - NULL, NULL, "intr%d:", vec); + errcode = ithread_create(&ithd, vec, 0, NULL, NULL, "intr%d:", + vec); if (errcode) return (errcode); mtx_lock_spin(&intr_table_lock); ==== //depot/projects/hammer/sys/sys/interrupt.h#6 (text+ko) ==== @@ -67,12 +67,12 @@ LIST_ENTRY(ithd) it_list; /* All interrupt threads. */ TAILQ_HEAD(, intrhand) it_handlers; /* Interrupt handlers. */ struct ithd *it_interrupted; /* Who we interrupted. */ - void (*it_disable)(void *); /* Enable interrupt source. */ - void (*it_enable)(void *); /* Disable interrupt source. */ + void (*it_disable)(uintptr_t); /* Enable interrupt source. */ + void (*it_enable)(uintptr_t); /* Disable interrupt source. */ void *it_md; /* Hook for MD interrupt code. */ int it_flags; /* Interrupt-specific flags. */ int it_need; /* Needs service. */ - void *it_vector; + uintptr_t it_vector; char it_name[MAXCOMLEN + 1]; }; @@ -114,9 +114,9 @@ #ifdef DDB void db_dump_ithread(struct ithd *ithd, int handlers); #endif -int ithread_create(struct ithd **ithread, void *vector, int flags, - void (*disable)(void *), void (*enable)(void *), const char *fmt, ...) - __printflike(6, 7); +int ithread_create(struct ithd **ithread, uintptr_t vector, int flags, + void (*disable)(uintptr_t), void (*enable)(uintptr_t), + const char *fmt, ...) __printflike(6, 7); int ithread_destroy(struct ithd *ithread); u_char ithread_priority(enum intr_type flags); int ithread_add_handler(struct ithd *ithread, const char *name,