summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2012-04-26 20:24:25 +0000
committerattilio <attilio@FreeBSD.org>2012-04-26 20:24:25 +0000
commit0b98e6d835caa6e794deb417e434762d6a00031b (patch)
treeee191eec81bcd147f9a5eb58b8dbd0b99c89a4f8
parent6eb12b42ba18698f1441188207485bf0d2414382 (diff)
downloadFreeBSD-src-0b98e6d835caa6e794deb417e434762d6a00031b.zip
FreeBSD-src-0b98e6d835caa6e794deb417e434762d6a00031b.tar.gz
Clean up the intr* MD KPI from the SMP dependency, removing a cause of
discrepancy between modules and kernel, but deal with SMP differences within the functions themselves. As an added bonus this also helps in terms of code readability. Requested by: gibbs Reviewed by: jhb, marius MFC after: 1 week
-rw-r--r--sys/amd64/amd64/machdep.c2
-rw-r--r--sys/amd64/include/intr_machdep.h4
-rw-r--r--sys/i386/i386/machdep.c2
-rw-r--r--sys/i386/include/intr_machdep.h4
-rw-r--r--sys/pc98/pc98/machdep.c2
-rw-r--r--sys/sparc64/include/intr_machdep.h2
-rw-r--r--sys/sparc64/sparc64/intr_machdep.c16
-rw-r--r--sys/sparc64/sparc64/machdep.c2
-rw-r--r--sys/x86/x86/intr_machdep.c15
9 files changed, 31 insertions, 18 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index acb948a..9580d79 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -296,12 +296,10 @@ cpu_startup(dummy)
cpu_setregs();
-#ifdef SMP
/*
* Add BSP as an interrupt target.
*/
intr_add_cpu(0);
-#endif
}
/*
diff --git a/sys/amd64/include/intr_machdep.h b/sys/amd64/include/intr_machdep.h
index 700e35f..3dd572d 100644
--- a/sys/amd64/include/intr_machdep.h
+++ b/sys/amd64/include/intr_machdep.h
@@ -140,15 +140,11 @@ int elcr_probe(void);
enum intr_trigger elcr_read_trigger(u_int irq);
void elcr_resume(void);
void elcr_write_trigger(u_int irq, enum intr_trigger trigger);
-#ifdef SMP
void intr_add_cpu(u_int cpu);
-#endif
int intr_add_handler(const char *name, int vector, driver_filter_t filter,
driver_intr_t handler, void *arg, enum intr_type flags,
void **cookiep);
-#ifdef SMP
int intr_bind(u_int vector, u_char cpu);
-#endif
int intr_config_intr(int vector, enum intr_trigger trig,
enum intr_polarity pol);
int intr_describe(u_int vector, void *ih, const char *descr);
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index b1757ca..fb6ad62 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -337,12 +337,10 @@ cpu_startup(dummy)
cpu_setregs();
#endif
-#ifdef SMP
/*
* Add BSP as an interrupt target.
*/
intr_add_cpu(0);
-#endif
}
/*
diff --git a/sys/i386/include/intr_machdep.h b/sys/i386/include/intr_machdep.h
index 004ed52..0312ff1 100644
--- a/sys/i386/include/intr_machdep.h
+++ b/sys/i386/include/intr_machdep.h
@@ -131,14 +131,10 @@ int elcr_probe(void);
enum intr_trigger elcr_read_trigger(u_int irq);
void elcr_resume(void);
void elcr_write_trigger(u_int irq, enum intr_trigger trigger);
-#ifdef SMP
void intr_add_cpu(u_int cpu);
-#endif
int intr_add_handler(const char *name, int vector, driver_filter_t filter,
driver_intr_t handler, void *arg, enum intr_type flags, void **cookiep);
-#ifdef SMP
int intr_bind(u_int vector, u_char cpu);
-#endif
int intr_config_intr(int vector, enum intr_trigger trig,
enum intr_polarity pol);
int intr_describe(u_int vector, void *ih, const char *descr);
diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c
index 1aeb765..691d21f 100644
--- a/sys/pc98/pc98/machdep.c
+++ b/sys/pc98/pc98/machdep.c
@@ -272,12 +272,10 @@ cpu_startup(dummy)
vm_pager_bufferinit();
cpu_setregs();
-#ifdef SMP
/*
* Add BSP as an interrupt target.
*/
intr_add_cpu(0);
-#endif
}
/*
diff --git a/sys/sparc64/include/intr_machdep.h b/sys/sparc64/include/intr_machdep.h
index 6e472f7..9319d8c 100644
--- a/sys/sparc64/include/intr_machdep.h
+++ b/sys/sparc64/include/intr_machdep.h
@@ -91,9 +91,7 @@ struct intr_vector {
extern ih_func_t *intr_handlers[];
extern struct intr_vector intr_vectors[];
-#ifdef SMP
void intr_add_cpu(u_int cpu);
-#endif
int intr_bind(int vec, u_char cpu);
int intr_describe(int vec, void *ih, const char *descr);
void intr_setup(int level, ih_func_t *ihf, int pri, iv_func_t *ivf,
diff --git a/sys/sparc64/sparc64/intr_machdep.c b/sys/sparc64/sparc64/intr_machdep.c
index ed644fc..2a2d33b 100644
--- a/sys/sparc64/sparc64/intr_machdep.c
+++ b/sys/sparc64/sparc64/intr_machdep.c
@@ -554,4 +554,20 @@ intr_shuffle_irqs(void *arg __unused)
}
SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs,
NULL);
+#else /* !SMP */
+
+/* Return EOPNOTSUPP in the UP case. */
+int
+intr_bind(int vec __unused, u_char cpu __unused)
+{
+
+ return (EOPNOTSUPP);
+}
+
+/* Use an empty stub for compatibility. */
+void
+intr_add_cpu(u_int cpu __unused)
+{
+
+}
#endif
diff --git a/sys/sparc64/sparc64/machdep.c b/sys/sparc64/sparc64/machdep.c
index fd5d338..63be007 100644
--- a/sys/sparc64/sparc64/machdep.c
+++ b/sys/sparc64/sparc64/machdep.c
@@ -197,12 +197,10 @@ cpu_startup(void *arg)
cpu_identify(rdpr(ver), PCPU_GET(clock), curcpu);
-#ifdef SMP
/*
* Add BSP as an interrupt target.
*/
intr_add_cpu(0);
-#endif
}
void
diff --git a/sys/x86/x86/intr_machdep.c b/sys/x86/x86/intr_machdep.c
index fef227e..a33f4b5 100644
--- a/sys/x86/x86/intr_machdep.c
+++ b/sys/x86/x86/intr_machdep.c
@@ -565,4 +565,19 @@ intr_next_cpu(void)
return (PCPU_GET(apic_id));
}
+
+/* Return EOPNOTSUPP in the UP case. */
+int
+intr_bind(u_int vector __unused, u_char cpu __unused)
+{
+
+ return (EOPNOTSUPP);
+}
+
+/* Use an empty stub for compatibility. */
+void
+intr_add_cpu(u_int cpu __unused)
+{
+
+}
#endif
OpenPOWER on IntegriCloud