FreeBSD/Linux Kernel Cross Reference
sys/sys/conf.h
1 /* $OpenBSD: conf.h,v 1.161 2023/01/14 12:11:11 kettenis Exp $ */
2 /* $NetBSD: conf.h,v 1.33 1996/05/03 20:03:32 christos Exp $ */
3
4 /*-
5 * Copyright (c) 1990, 1993
6 * The Regents of the University of California. All rights reserved.
7 * (c) UNIX System Laboratories, Inc.
8 * All or some portions of this file are derived from material licensed
9 * to the University of California by American Telephone and Telegraph
10 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
11 * the permission of UNIX System Laboratories, Inc.
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 * 1. Redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer.
18 * 2. Redistributions in binary form must reproduce the above copyright
19 * notice, this list of conditions and the following disclaimer in the
20 * documentation and/or other materials provided with the distribution.
21 * 3. Neither the name of the University nor the names of its contributors
22 * may be used to endorse or promote products derived from this software
23 * without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 * SUCH DAMAGE.
36 *
37 * @(#)conf.h 8.3 (Berkeley) 1/21/94
38 */
39
40
41 #ifndef _SYS_CONF_H_
42 #define _SYS_CONF_H_
43
44 /*
45 * Definitions of device driver entry switches
46 */
47
48 struct buf;
49 struct proc;
50 struct tty;
51 struct uio;
52 struct vnode;
53 struct knote;
54
55 /*
56 * Types for d_type
57 */
58 #define D_DISK 1
59 #define D_TTY 2
60
61 /*
62 * Flags for d_flags
63 */
64 #define D_CLONE 0x0001 /* clone upon open */
65
66 #ifdef _KERNEL
67
68 #define dev_type_open(n) int n(dev_t, int, int, struct proc *)
69 #define dev_type_close(n) int n(dev_t, int, int, struct proc *)
70 #define dev_type_strategy(n) void n(struct buf *)
71 #define dev_type_ioctl(n) \
72 int n(dev_t, u_long, caddr_t, int, struct proc *)
73
74 #define dev_decl(n,t) __CONCAT(dev_type_,t)(__CONCAT(n,t))
75 #define dev_init(c,n,t) \
76 ((c) > 0 ? __CONCAT(n,t) : (__CONCAT(dev_type_,t)((*))) enxio)
77
78 #endif /* _KERNEL */
79
80 /*
81 * Block device switch table
82 */
83 struct bdevsw {
84 int (*d_open)(dev_t dev, int oflags, int devtype,
85 struct proc *p);
86 int (*d_close)(dev_t dev, int fflag, int devtype,
87 struct proc *p);
88 void (*d_strategy)(struct buf *bp);
89 int (*d_ioctl)(dev_t dev, u_long cmd, caddr_t data,
90 int fflag, struct proc *p);
91 int (*d_dump)(dev_t dev, daddr_t blkno, caddr_t va,
92 size_t size);
93 daddr_t (*d_psize)(dev_t dev);
94 u_int d_type;
95 /* u_int d_flags; */
96 };
97
98 #ifdef _KERNEL
99
100 extern struct bdevsw bdevsw[];
101
102 /* bdevsw-specific types */
103 #define dev_type_dump(n) int n(dev_t, daddr_t, caddr_t, size_t)
104 #define dev_type_size(n) daddr_t n(dev_t)
105
106 /* bdevsw-specific initializations */
107 #define dev_size_init(c,n) (c > 0 ? __CONCAT(n,size) : 0)
108
109 #define bdev_decl(n) \
110 dev_decl(n,open); dev_decl(n,close); dev_decl(n,strategy); \
111 dev_decl(n,ioctl); dev_decl(n,dump); dev_decl(n,size)
112
113 #define bdev_disk_init(c,n) { \
114 dev_init(c,n,open), dev_init(c,n,close), \
115 dev_init(c,n,strategy), dev_init(c,n,ioctl), \
116 dev_init(c,n,dump), dev_size_init(c,n), D_DISK }
117
118 #define bdev_swap_init(c,n) { \
119 (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
120 dev_init(c,n,strategy), (dev_type_ioctl((*))) enodev, \
121 (dev_type_dump((*))) enodev, 0 }
122
123 #define bdev_notdef() { \
124 (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
125 (dev_type_strategy((*))) enodev, (dev_type_ioctl((*))) enodev, \
126 (dev_type_dump((*))) enodev, 0 }
127
128 #endif
129
130 /*
131 * Character device switch table
132 */
133 struct cdevsw {
134 int (*d_open)(dev_t dev, int oflags, int devtype,
135 struct proc *p);
136 int (*d_close)(dev_t dev, int fflag, int devtype,
137 struct proc *);
138 int (*d_read)(dev_t dev, struct uio *uio, int ioflag);
139 int (*d_write)(dev_t dev, struct uio *uio, int ioflag);
140 int (*d_ioctl)(dev_t dev, u_long cmd, caddr_t data,
141 int fflag, struct proc *p);
142 int (*d_stop)(struct tty *tp, int rw);
143 struct tty *
144 (*d_tty)(dev_t dev);
145 paddr_t (*d_mmap)(dev_t, off_t, int);
146 u_int d_type;
147 u_int d_flags;
148 int (*d_kqfilter)(dev_t dev, struct knote *kn);
149 };
150
151 #ifdef _KERNEL
152
153 extern struct cdevsw cdevsw[];
154
155 /* cdevsw-specific types */
156 #define dev_type_read(n) int n(dev_t, struct uio *, int)
157 #define dev_type_write(n) int n(dev_t, struct uio *, int)
158 #define dev_type_stop(n) int n(struct tty *, int)
159 #define dev_type_tty(n) struct tty *n(dev_t)
160 #define dev_type_mmap(n) paddr_t n(dev_t, off_t, int)
161 #define dev_type_kqfilter(n) int n(dev_t, struct knote *)
162
163 #define cdev_decl(n) \
164 dev_decl(n,open); dev_decl(n,close); dev_decl(n,read); \
165 dev_decl(n,write); dev_decl(n,ioctl); dev_decl(n,stop); \
166 dev_decl(n,tty); dev_decl(n,mmap); \
167 dev_decl(n,kqfilter)
168
169 /* open, close, read, write, ioctl */
170 #define cdev_disk_init(c,n) { \
171 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
172 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
173 0, (dev_type_mmap((*))) enodev, \
174 D_DISK, 0, seltrue_kqfilter }
175
176 /* open, close, read, write, ioctl */
177 #define cdev_tape_init(c,n) { \
178 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
179 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
180 0, (dev_type_mmap((*))) enodev, \
181 0, 0, seltrue_kqfilter }
182
183 /* open, close, read, write, ioctl, stop, tty */
184 #define cdev_tty_init(c,n) { \
185 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
186 dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
187 dev_init(c,n,tty), (dev_type_mmap((*))) enodev, \
188 D_TTY, 0, ttkqfilter }
189
190 /* open, close, read, ioctl, kqfilter */
191 #define cdev_mouse_init(c,n) { \
192 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
193 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
194 (dev_type_stop((*))) enodev, 0, \
195 (dev_type_mmap((*))) enodev , 0, 0, dev_init(c,n,kqfilter) }
196
197 #define cdev_notdef() { \
198 (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
199 (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
200 (dev_type_ioctl((*))) enodev, (dev_type_stop((*))) enodev, \
201 0, (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
202
203 /* open, close, read, write, ioctl, kqfilter -- XXX should be a tty */
204 #define cdev_cn_init(c,n) { \
205 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
206 dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
207 0, (dev_type_mmap((*))) enodev, \
208 D_TTY, 0, dev_init(c,n,kqfilter) }
209
210 /* open, read, write, ioctl, kqfilter -- XXX should be a tty */
211 #define cdev_ctty_init(c,n) { \
212 dev_init(c,n,open), (dev_type_close((*))) nullop, dev_init(c,n,read), \
213 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) nullop, \
214 0, (dev_type_mmap((*))) enodev, \
215 D_TTY, 0, dev_init(c,n,kqfilter) }
216
217 /* open, close, read, write, ioctl, mmap */
218 #define cdev_mm_init(c,n) { \
219 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
220 dev_init(c,n,write), dev_init(c,n,ioctl), \
221 (dev_type_stop((*))) enodev, 0, dev_init(c,n,mmap), \
222 0, 0, seltrue_kqfilter }
223
224 /* open, close, read, write, ioctl, tty, kqfilter */
225 #define cdev_ptc_init(c,n) { \
226 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
227 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) nullop, \
228 dev_init(c,n,tty), (dev_type_mmap((*))) enodev, \
229 D_TTY, 0, dev_init(c,n,kqfilter) }
230
231 /* open, close, read, write, ioctl, mmap */
232 #define cdev_ptm_init(c,n) { \
233 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
234 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
235 (dev_type_stop((*))) enodev, 0, (dev_type_mmap((*))) enodev }
236
237 /* open, close, read, ioctl, kqfilter XXX should be a generic device */
238 #define cdev_log_init(c,n) { \
239 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
240 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
241 (dev_type_stop((*))) enodev, 0, \
242 (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,n,kqfilter) }
243
244 /* open */
245 #define cdev_fd_init(c,n) { \
246 dev_init(c,n,open), (dev_type_close((*))) enodev, \
247 (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
248 (dev_type_ioctl((*))) enodev, (dev_type_stop((*))) enodev, \
249 0, (dev_type_mmap((*))) enodev }
250
251 /* open, close, read, write, ioctl, kqfilter -- XXX should be generic device */
252 #define cdev_tun_init(c,n) { \
253 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
254 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
255 0, (dev_type_mmap((*))) enodev, \
256 0, 0, dev_init(c,n,kqfilter) }
257
258 /* open, close, ioctl, kqfilter -- XXX should be generic device */
259 #define cdev_vscsi_init(c,n) { \
260 dev_init(c,n,open), dev_init(c,n,close), \
261 (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
262 dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
263 0, (dev_type_mmap((*))) enodev, \
264 0, 0, dev_init(c,n,kqfilter) }
265
266 /* open, close, read, write, ioctl, kqfilter -- XXX should be generic device */
267 #define cdev_pppx_init(c,n) { \
268 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
269 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
270 0, (dev_type_mmap((*))) enodev, \
271 0, 0, dev_init(c,n,kqfilter) }
272
273 /* open, close, read, write, ioctl, kqfilter, cloning -- XXX should be generic device */
274 #define cdev_bpf_init(c,n) { \
275 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
276 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
277 0, (dev_type_mmap((*))) enodev, \
278 0, D_CLONE, dev_init(c,n,kqfilter) }
279
280 /* open, close, ioctl */
281 #define cdev_ch_init(c,n) { \
282 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
283 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
284 (dev_type_stop((*))) enodev, 0, \
285 (dev_type_mmap((*))) enodev }
286
287 /* open, close, ioctl */
288 #define cdev_uk_init(c,n) { \
289 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
290 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
291 (dev_type_stop((*))) enodev, 0, \
292 (dev_type_mmap((*))) enodev }
293
294 /* open, close, ioctl, mmap */
295 #define cdev_fb_init(c,n) { \
296 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
297 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
298 (dev_type_stop((*))) enodev, 0, \
299 dev_init(c,n,mmap) }
300
301 /* open, close, read, write, ioctl, kqfilter */
302 #define cdev_audio_init(c,n) { \
303 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
304 dev_init(c,n,write), dev_init(c,n,ioctl), \
305 (dev_type_stop((*))) enodev, 0, \
306 (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,n,kqfilter) }
307
308 /* open, close, read, write, ioctl, kqfilter */
309 #define cdev_midi_init(c,n) { \
310 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
311 dev_init(c,n,write), dev_init(c,n,ioctl), \
312 (dev_type_stop((*))) enodev, 0, \
313 (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,n,kqfilter) }
314
315 /* open, close, read */
316 #define cdev_ksyms_init(c,n) { \
317 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
318 (dev_type_write((*))) enodev, (dev_type_ioctl((*))) enodev, \
319 (dev_type_stop((*))) enodev, 0, \
320 (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
321
322 /* open, close, ioctl */
323 #define cdev_kstat_init(c,n) { \
324 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
325 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
326 (dev_type_stop((*))) enodev, 0, \
327 (dev_type_mmap((*))) enodev }
328
329 /* open, close, read, write, ioctl, stop, tty, mmap, kqfilter */
330 #define cdev_wsdisplay_init(c,n) { \
331 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
332 dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
333 dev_init(c,n,tty), dev_init(c,n,mmap), \
334 D_TTY, 0, dev_init(c,n,kqfilter) }
335
336 /* open, close, read, write, ioctl, kqfilter */
337 #define cdev_random_init(c,n) { \
338 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
339 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
340 0, (dev_type_mmap((*))) enodev, \
341 0, 0, dev_init(c,n,kqfilter) }
342
343 /* open, close, ioctl, nokqfilter */
344 #define cdev_usb_init(c,n) { \
345 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
346 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
347 (dev_type_stop((*))) enodev, 0, \
348 (dev_type_mmap((*))) enodev }
349
350 /* open, close, write */
351 #define cdev_ulpt_init(c,n) { \
352 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
353 dev_init(c,n,write), (dev_type_ioctl((*))) enodev, \
354 (dev_type_stop((*))) enodev, 0, (dev_type_mmap((*))) enodev }
355
356 /* open, close, ioctl */
357 #define cdev_pf_init(c,n) { \
358 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
359 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
360 (dev_type_stop((*))) enodev, 0, \
361 (dev_type_mmap((*))) enodev, 0, D_CLONE }
362
363 /* open, close, read, write, ioctl, kqfilter */
364 #define cdev_usbdev_init(c,n) { \
365 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
366 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
367 0, (dev_type_mmap((*))) enodev, 0, 0, \
368 dev_init(c,n,kqfilter) }
369
370 /* open, close, read, write, ioctl, kqfilter */
371 #define cdev_fido_init(c,n) { \
372 dev_init(c,n,open), dev_init(c,uhid,close), dev_init(c,uhid,read), \
373 dev_init(c,uhid,write), dev_init(c,fido,ioctl), \
374 (dev_type_stop((*))) enodev, 0, \
375 (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,uhid,kqfilter) }
376
377 /* open, close, read, write, ioctl, kqfilter */
378 #define cdev_ujoy_init(c,n) { \
379 dev_init(c,n,open), dev_init(c,uhid,close), dev_init(c,uhid,read), \
380 dev_init(c,uhid,write), dev_init(c,ujoy,ioctl), \
381 (dev_type_stop((*))) enodev, 0, \
382 (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,uhid,kqfilter) }
383
384 /* open, close, init */
385 #define cdev_pci_init(c,n) { \
386 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
387 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
388 (dev_type_stop((*))) enodev, 0, \
389 (dev_type_mmap((*))) enodev }
390
391 /* open, close, ioctl */
392 #define cdev_radio_init(c,n) { \
393 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
394 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
395 (dev_type_stop((*))) enodev, 0, \
396 (dev_type_mmap((*))) enodev }
397
398 /* open, close, ioctl, read, mmap, kqfilter */
399 #define cdev_video_init(c,n) { \
400 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
401 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
402 (dev_type_stop((*))) enodev, 0, \
403 dev_init(c,n,mmap), 0, 0, dev_init(c,n,kqfilter) }
404
405 /* open, close, write, ioctl */
406 #define cdev_spkr_init(c,n) { \
407 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
408 dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
409 0, (dev_type_mmap((*))) enodev, \
410 0, 0, seltrue_kqfilter }
411
412 /* open, close, write */
413 #define cdev_lpt_init(c,n) { \
414 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
415 dev_init(c,n,write), (dev_type_ioctl((*))) enodev, \
416 (dev_type_stop((*))) enodev, 0, (dev_type_mmap((*))) enodev, \
417 0, 0, seltrue_kqfilter }
418
419 /* open, close, read, ioctl, mmap */
420 #define cdev_bktr_init(c, n) { \
421 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
422 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
423 (dev_type_stop((*))) enodev, 0, dev_init(c,n,mmap), \
424 0, 0, seltrue_kqfilter }
425
426 /* open, close, read, ioctl, kqfilter */
427 #define cdev_hotplug_init(c,n) { \
428 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
429 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
430 (dev_type_stop((*))) enodev, 0, \
431 (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,n,kqfilter) }
432
433 /* open, close, ioctl */
434 #define cdev_gpio_init(c,n) { \
435 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
436 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
437 (dev_type_stop((*))) enodev, 0, \
438 (dev_type_mmap((*))) enodev }
439
440 /* open, close, ioctl */
441 #define cdev_bio_init(c,n) { \
442 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
443 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
444 (dev_type_stop((*))) enodev, 0, \
445 (dev_type_mmap((*))) enodev }
446
447 /* open, close, read, ioctl, mmap, nokqfilter */
448 #define cdev_drm_init(c,n) { \
449 dev_init(c,n,open), dev_init(c,n,close), dev_init(c, n, read), \
450 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
451 (dev_type_stop((*))) enodev, 0, \
452 dev_init(c,n,mmap), 0, D_CLONE, dev_init(c,n,kqfilter) }
453
454 /* open, close, ioctl */
455 #define cdev_amdmsr_init(c,n) { \
456 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
457 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
458 (dev_type_stop((*))) enodev, 0, \
459 (dev_type_mmap((*))) enodev }
460
461 /* open, close, read, write, ioctl */
462 #define cdev_fuse_init(c,n) { \
463 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
464 dev_init(c,n,write), dev_init(c,n,ioctl), \
465 (dev_type_stop((*))) enodev, 0, \
466 (dev_type_mmap((*))) enodev, 0, D_CLONE, dev_init(c,n,kqfilter) }
467
468 /* open, close, ioctl */
469 #define cdev_pvbus_init(c,n) { \
470 dev_init(c,n,open), dev_init(c,n,close), \
471 (dev_type_read((*))) enodev, \
472 (dev_type_write((*))) enodev, \
473 dev_init(c,n,ioctl), \
474 (dev_type_stop((*))) enodev, 0, \
475 (dev_type_mmap((*))) enodev }
476
477 /* open, close, ioctl */
478 #define cdev_ipmi_init(c,n) { \
479 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
480 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
481 (dev_type_stop((*))) enodev, 0, (dev_type_mmap((*))) enodev, \
482 0, 0, seltrue_kqfilter }
483
484 /* open, close, ioctl */
485 #define cdev_efi_init(c,n) { \
486 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
487 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
488 (dev_type_stop((*))) enodev, 0, \
489 (dev_type_mmap((*))) enodev }
490
491 /* open, close, ioctl, mmap */
492 #define cdev_kcov_init(c,n) { \
493 dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
494 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
495 (dev_type_stop((*))) enodev, 0, \
496 (dev_init(c,n,mmap)), 0, D_CLONE }
497
498 /* open, close, read, ioctl */
499 #define cdev_dt_init(c,n) { \
500 dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
501 (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
502 (dev_type_stop((*))) enodev, 0, \
503 (dev_type_mmap((*))) enodev, 0, D_CLONE }
504
505 #endif
506
507 /*
508 * Line discipline switch table
509 */
510 struct linesw {
511 int (*l_open)(dev_t dev, struct tty *tp, struct proc *p);
512 int (*l_close)(struct tty *tp, int flags, struct proc *p);
513 int (*l_read)(struct tty *tp, struct uio *uio,
514 int flag);
515 int (*l_write)(struct tty *tp, struct uio *uio,
516 int flag);
517 int (*l_ioctl)(struct tty *tp, u_long cmd, caddr_t data,
518 int flag, struct proc *p);
519 int (*l_rint)(int c, struct tty *tp);
520 int (*l_start)(struct tty *tp);
521 int (*l_modem)(struct tty *tp, int flag);
522 };
523
524 #ifdef _KERNEL
525 extern struct linesw linesw[];
526 #endif
527
528 /*
529 * Swap device table
530 */
531 struct swdevt {
532 dev_t sw_dev;
533 int sw_flags;
534 };
535 #define SW_FREED 0x01
536 #define SW_SEQUENTIAL 0x02
537 #define sw_freed sw_flags /* XXX compat */
538
539 #ifdef _KERNEL
540 extern struct swdevt swdevt[];
541 extern const int chrtoblktbl[];
542 extern const int nchrtoblktbl;
543
544 struct bdevsw *bdevsw_lookup(dev_t);
545 struct cdevsw *cdevsw_lookup(dev_t);
546 dev_t chrtoblk(dev_t);
547 dev_t blktochr(dev_t);
548 int iskmemdev(dev_t);
549 int iszerodev(dev_t);
550 dev_t getnulldev(void);
551
552 cdev_decl(filedesc);
553
554 cdev_decl(log);
555
556 #define ptstty ptytty
557 #define ptsioctl ptyioctl
558 cdev_decl(pts);
559
560 #define ptctty ptytty
561 #define ptcioctl ptyioctl
562 cdev_decl(ptc);
563
564 cdev_decl(ptm);
565
566 cdev_decl(ctty);
567
568 cdev_decl(audio);
569 cdev_decl(drm);
570 cdev_decl(midi);
571 cdev_decl(radio);
572 cdev_decl(video);
573 cdev_decl(cn);
574
575 bdev_decl(sw);
576
577 bdev_decl(vnd);
578 cdev_decl(vnd);
579
580 cdev_decl(ch);
581
582 bdev_decl(sd);
583 cdev_decl(sd);
584
585 cdev_decl(ses);
586
587 cdev_decl(st);
588
589 bdev_decl(cd);
590 cdev_decl(cd);
591
592 bdev_decl(rd);
593 cdev_decl(rd);
594
595 bdev_decl(uk);
596 cdev_decl(uk);
597
598 cdev_decl(dt);
599
600 cdev_decl(diskmap);
601
602 cdev_decl(bpf);
603
604 cdev_decl(pf);
605
606 cdev_decl(tun);
607 cdev_decl(tap);
608 cdev_decl(pppx);
609 cdev_decl(pppac);
610
611 cdev_decl(random);
612
613 cdev_decl(wsdisplay);
614 cdev_decl(wskbd);
615 cdev_decl(wsmouse);
616 cdev_decl(wsmux);
617
618 cdev_decl(ksyms);
619 cdev_decl(kstat);
620
621 cdev_decl(bio);
622 cdev_decl(vscsi);
623
624 cdev_decl(gpr);
625 cdev_decl(bktr);
626
627 cdev_decl(usb);
628 cdev_decl(ugen);
629 cdev_decl(uhid);
630 cdev_decl(fido);
631 cdev_decl(ujoy);
632 cdev_decl(ucom);
633 cdev_decl(ulpt);
634 cdev_decl(urio);
635
636 cdev_decl(hotplug);
637 cdev_decl(gpio);
638 cdev_decl(amdmsr);
639 cdev_decl(fuse);
640 cdev_decl(pvbus);
641 cdev_decl(ipmi);
642 cdev_decl(efi);
643 cdev_decl(kcov);
644
645 #endif
646
647 #endif /* _SYS_CONF_H_ */
Cache object: d957e242ad6aaf757527813cca88c2d5
|