Deleted Added
full compact
pic_if.m (297230) pic_if.m (297539)
1#-
1#-
2# Copyright (c) 2012 Jakub Wojciech Klama <jceel@FreeBSD.org>
3# Copyright (c) 2015 Svatopluk Kraus
4# Copyright (c) 2015 Michal Meloun
2# Copyright (c) 2015-2016 Svatopluk Kraus
3# Copyright (c) 2015-2016 Michal Meloun
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions
9# are met:
10# 1. Redistributions of source code must retain the above copyright
11# notice, this list of conditions and the following disclaimer.
12# 2. Redistributions in binary form must reproduce the above copyright

--- 7 unchanged lines hidden (view full) ---

20# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26# SUCH DAMAGE.
27#
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9# 1. Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# 2. Redistributions in binary form must reproduce the above copyright

--- 7 unchanged lines hidden (view full) ---

19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25# SUCH DAMAGE.
26#
28# $FreeBSD: head/sys/kern/pic_if.m 297230 2016-03-24 09:55:11Z skra $
27# $FreeBSD: head/sys/kern/pic_if.m 297539 2016-04-04 09:15:25Z skra $
29#
30
31#include <sys/bus.h>
32#include <sys/cpuset.h>
28#
29
30#include <sys/bus.h>
31#include <sys/cpuset.h>
33#include <machine/frame.h>
34#include <machine/intr.h>
32#include <sys/resource.h>
33#include <sys/intr.h>
35
36INTERFACE pic;
37
38CODE {
34
35INTERFACE pic;
36
37CODE {
39 static int null_pic_bind(device_t dev, struct intr_irqsrc *isrc)
38 static int
39 dflt_pic_bind_intr(device_t dev, struct intr_irqsrc *isrc)
40 {
40 {
41
41 return (EOPNOTSUPP);
42 }
43
42 return (EOPNOTSUPP);
43 }
44
44 static void null_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc)
45 static int
46 null_pic_alloc_intr(device_t dev, struct intr_irqsrc *isrc,
47 struct resource *res, struct intr_map_data *data)
45 {
48 {
46 return;
49
50 return (0);
47 }
48
51 }
52
49 static void null_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc)
53 static int
54 null_pic_release_intr(device_t dev, struct intr_irqsrc *isrc,
55 struct resource *res, struct intr_map_data *data)
50 {
56 {
51 return;
57
58 return (0);
52 }
53
59 }
60
54 static void null_pic_init_secondary(device_t dev)
61 static int
62 null_pic_setup_intr(device_t dev, struct intr_irqsrc *isrc,
63 struct resource *res, struct intr_map_data *data)
55 {
64 {
56 return;
65
66 return (0);
57 }
58
67 }
68
59 static void null_pic_ipi_send(device_t dev, cpuset_t cpus, u_int ipi)
69 static int
70 null_pic_teardown_intr(device_t dev, struct intr_irqsrc *isrc,
71 struct resource *res, struct intr_map_data *data)
60 {
72 {
61 return;
73
74 return (0);
62 }
63
75 }
76
77 static void
78 null_pic_init_secondary(device_t dev)
79 {
80 }
81
82 static void
83 null_pic_ipi_send(device_t dev, cpuset_t cpus, u_int ipi)
84 {
85 }
86
64 static int
65 dflt_pic_ipi_setup(device_t dev, u_int ipi, struct intr_irqsrc *isrc)
66 {
67
68 return (EOPNOTSUPP);
69 }
70};
71
87 static int
88 dflt_pic_ipi_setup(device_t dev, u_int ipi, struct intr_irqsrc *isrc)
89 {
90
91 return (EOPNOTSUPP);
92 }
93};
94
72METHOD int register {
95METHOD int alloc_intr {
73 device_t dev;
74 struct intr_irqsrc *isrc;
96 device_t dev;
97 struct intr_irqsrc *isrc;
75 boolean_t *is_percpu;
76};
98 struct resource *res;
99 struct intr_map_data *data;
100} DEFAULT null_pic_alloc_intr;
77
101
78METHOD int unregister {
102METHOD int bind_intr {
79 device_t dev;
80 struct intr_irqsrc *isrc;
103 device_t dev;
104 struct intr_irqsrc *isrc;
81};
105} DEFAULT dflt_pic_bind_intr;
82
83METHOD void disable_intr {
84 device_t dev;
85 struct intr_irqsrc *isrc;
106
107METHOD void disable_intr {
108 device_t dev;
109 struct intr_irqsrc *isrc;
86} DEFAULT null_pic_disable_intr;
110};
87
111
88METHOD void disable_source {
112METHOD void enable_intr {
89 device_t dev;
90 struct intr_irqsrc *isrc;
91};
92
113 device_t dev;
114 struct intr_irqsrc *isrc;
115};
116
93METHOD void enable_source {
117METHOD int map_intr {
94 device_t dev;
118 device_t dev;
95 struct intr_irqsrc *isrc;
119 struct intr_map_data *data;
120 struct intr_irqsrc **isrcp;
96};
97
121};
122
98METHOD void enable_intr {
123METHOD int release_intr {
99 device_t dev;
100 struct intr_irqsrc *isrc;
124 device_t dev;
125 struct intr_irqsrc *isrc;
101} DEFAULT null_pic_enable_intr;
126 struct resource *res;
127 struct intr_map_data *data;
128} DEFAULT null_pic_release_intr;
102
129
103METHOD void pre_ithread {
130METHOD int setup_intr {
104 device_t dev;
105 struct intr_irqsrc *isrc;
131 device_t dev;
132 struct intr_irqsrc *isrc;
106};
133 struct resource *res;
134 struct intr_map_data *data;
135} DEFAULT null_pic_setup_intr;
107
136
108METHOD void post_ithread {
137METHOD int teardown_intr {
109 device_t dev;
110 struct intr_irqsrc *isrc;
138 device_t dev;
139 struct intr_irqsrc *isrc;
111};
140 struct resource *res;
141 struct intr_map_data *data;
142} DEFAULT null_pic_teardown_intr;
112
113METHOD void post_filter {
114 device_t dev;
115 struct intr_irqsrc *isrc;
116};
117
143
144METHOD void post_filter {
145 device_t dev;
146 struct intr_irqsrc *isrc;
147};
148
118METHOD int bind {
149METHOD void post_ithread {
119 device_t dev;
120 struct intr_irqsrc *isrc;
150 device_t dev;
151 struct intr_irqsrc *isrc;
121} DEFAULT null_pic_bind;
152};
122
153
154METHOD void pre_ithread {
155 device_t dev;
156 struct intr_irqsrc *isrc;
157};
158
123METHOD void init_secondary {
124 device_t dev;
125} DEFAULT null_pic_init_secondary;
126
127METHOD void ipi_send {
128 device_t dev;
129 struct intr_irqsrc *isrc;
130 cpuset_t cpus;
159METHOD void init_secondary {
160 device_t dev;
161} DEFAULT null_pic_init_secondary;
162
163METHOD void ipi_send {
164 device_t dev;
165 struct intr_irqsrc *isrc;
166 cpuset_t cpus;
167 u_int ipi;
131} DEFAULT null_pic_ipi_send;
132
133METHOD int ipi_setup {
134 device_t dev;
135 u_int ipi;
168} DEFAULT null_pic_ipi_send;
169
170METHOD int ipi_setup {
171 device_t dev;
172 u_int ipi;
136 struct intr_irqsrc *isrc;
173 struct intr_irqsrc **isrcp;
137} DEFAULT dflt_pic_ipi_setup;
174} DEFAULT dflt_pic_ipi_setup;