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