summaryrefslogtreecommitdiffstats
path: root/sys/sys/intr.h
diff options
context:
space:
mode:
authorskra <skra@FreeBSD.org>2016-03-24 09:55:11 +0000
committerskra <skra@FreeBSD.org>2016-03-24 09:55:11 +0000
commit2683d49bfb03b764036757d1fdd5754c3412123a (patch)
tree4893de0375aab00843476e8638ec2bd3177250ab /sys/sys/intr.h
parent3f00ea48451e9e4c48321e100d8faae32e73ebcd (diff)
downloadFreeBSD-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.h8
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);
OpenPOWER on IntegriCloud