diff options
author | skra <skra@FreeBSD.org> | 2016-03-24 09:55:11 +0000 |
---|---|---|
committer | skra <skra@FreeBSD.org> | 2016-03-24 09:55:11 +0000 |
commit | 2683d49bfb03b764036757d1fdd5754c3412123a (patch) | |
tree | 4893de0375aab00843476e8638ec2bd3177250ab /sys/sys/intr.h | |
parent | 3f00ea48451e9e4c48321e100d8faae32e73ebcd (diff) | |
download | FreeBSD-src-2683d49bfb03b764036757d1fdd5754c3412123a.zip FreeBSD-src-2683d49bfb03b764036757d1fdd5754c3412123a.tar.gz |
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
Diffstat (limited to 'sys/sys/intr.h')
-rw-r--r-- | sys/sys/intr.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/sys/intr.h b/sys/sys/intr.h index 5ef2379..e619b3b 100644 --- a/sys/sys/intr.h +++ b/sys/sys/intr.h @@ -50,8 +50,6 @@ typedef int intr_irq_filter_t(void *arg); #define INTR_ISRC_NAMELEN (MAXCOMLEN + 1) -typedef void intr_ipi_filter_t(void *arg); - enum intr_isrc_type { INTR_ISRCT_NAMESPACE, INTR_ISRCT_FDT @@ -81,15 +79,17 @@ struct intr_irqsrc { struct intr_event * isrc_event; #ifdef INTR_SOLO intr_irq_filter_t * isrc_filter; -#endif - intr_ipi_filter_t * isrc_ipifilter; void * isrc_arg; +#endif #ifdef FDT u_int isrc_ncells; pcell_t isrc_cells[]; /* leave it last */ #endif }; +struct intr_irqsrc *intr_isrc_alloc(u_int type, u_int extsize); +void intr_isrc_free(struct intr_irqsrc *isrc); + void intr_irq_set_name(struct intr_irqsrc *isrc, const char *fmt, ...) __printflike(2, 3); |