aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/pic_if.m
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/kern/pic_if.m
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/kern/pic_if.m')
-rw-r--r--sys/kern/pic_if.m13
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/kern/pic_if.m b/sys/kern/pic_if.m
index 2309f0c9fd9f..04d5f5f1afad 100644
--- a/sys/kern/pic_if.m
+++ b/sys/kern/pic_if.m
@@ -60,6 +60,13 @@ CODE {
{
return;
}
+
+ static int
+ dflt_pic_ipi_setup(device_t dev, u_int ipi, struct intr_irqsrc *isrc)
+ {
+
+ return (EOPNOTSUPP);
+ }
};
METHOD int register {
@@ -122,3 +129,9 @@ METHOD void ipi_send {
struct intr_irqsrc *isrc;
cpuset_t cpus;
} DEFAULT null_pic_ipi_send;
+
+METHOD int ipi_setup {
+ device_t dev;
+ u_int ipi;
+ struct intr_irqsrc *isrc;
+} DEFAULT dflt_pic_ipi_setup;