aboutsummaryrefslogtreecommitdiff
path: root/sys/arm/include/intr.h
diff options
context:
space:
mode:
authorSvatopluk Kraus <skra@FreeBSD.org>2016-03-24 09:55:11 +0000
committerSvatopluk Kraus <skra@FreeBSD.org>2016-03-24 09:55:11 +0000
commit61c8fde5d63adf4b0c05702c4ba060e3cc0f3c69 (patch)
tree4893de0375aab00843476e8638ec2bd3177250ab /sys/arm/include/intr.h
parent6227e5963580e94874fc94d57c956494ff965785 (diff)
downloadsrc-61c8fde5d63adf4b0c05702c4ba060e3cc0f3c69.tar.gz
src-61c8fde5d63adf4b0c05702c4ba060e3cc0f3c69.zip
Generalize IPI support for ARM intrng and use it for interrupt
controller IPI provider. New struct intr_ipi is defined which keeps all info about an IPI: its name, counter, send and dispatch methods. Generic intr_ipi_setup(), intr_ipi_send() and intr_ipi_dispatch() functions are implemented. An IPI provider must implement two functions: (1) an intr_ipi_send_t function which is able to send an IPI, (2) a setup function which initializes itself for an IPI and calls intr_ipi_setup() with appropriate arguments. Differential Revision: https://reviews.freebsd.org/D5700
Notes
Notes: svn path=/head/; revision=297230
Diffstat (limited to 'sys/arm/include/intr.h')
-rw-r--r--sys/arm/include/intr.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/arm/include/intr.h b/sys/arm/include/intr.h
index 74d7e4d13510..a5683855fae5 100644
--- a/sys/arm/include/intr.h
+++ b/sys/arm/include/intr.h
@@ -52,14 +52,17 @@
#include <sys/intr.h>
#ifdef SMP
-void intr_ipi_dispatch(struct intr_irqsrc *isrc, struct trapframe *tf);
+typedef void intr_ipi_send_t(void *, cpuset_t);
+typedef void intr_ipi_handler_t(void *);
-#define AISHF_NOALLOC 0x0001
+void intr_ipi_dispatch(u_int, struct trapframe *);
+void intr_ipi_send(cpuset_t, u_int);
-int intr_ipi_set_handler(u_int ipi, const char *name, intr_ipi_filter_t *filter,
- void *arg, u_int flags);
-#endif
+void intr_ipi_setup(u_int, const char *, intr_ipi_handler_t *, void *,
+ intr_ipi_send_t *, void *);
+int intr_pic_ipi_setup(u_int, const char *, intr_ipi_handler_t *, void *);
+#endif
#else /* ARM_INTRNG */
/* XXX move to std.* files? */