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; |