PERFORCE change 42623 for review

Peter Wemm peter at FreeBSD.org
Sun Nov 16 21:37:07 PST 2003


http://perforce.freebsd.org/chv.cgi?CH=42623

Change 42623 by peter at 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,


More information about the p4-projects mailing list