diff options
author | Svatopluk Kraus <skra@FreeBSD.org> | 2016-03-24 09:55:11 +0000 |
---|---|---|
committer | Svatopluk Kraus <skra@FreeBSD.org> | 2016-03-24 09:55:11 +0000 |
commit | 61c8fde5d63adf4b0c05702c4ba060e3cc0f3c69 (patch) | |
tree | 4893de0375aab00843476e8638ec2bd3177250ab /sys/arm/include/intr.h | |
parent | 6227e5963580e94874fc94d57c956494ff965785 (diff) | |
download | src-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.h | 13 |
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? */ |