Annotation of sys/sys/conf.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: conf.h,v 1.83 2007/07/23 13:30:21 mk 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_TAPE 1
! 59: #define D_DISK 2
! 60: #define D_TTY 3
! 61:
! 62: /*
! 63: * Flags for d_flags
! 64: */
! 65: #define D_KQFILTER 0x0001 /* has kqfilter entry */
! 66: #define D_CLONE 0x0002 /* clone upon open */
! 67:
! 68: #ifdef _KERNEL
! 69:
! 70: #define dev_type_open(n) int n(dev_t, int, int, struct proc *)
! 71: #define dev_type_close(n) int n(dev_t, int, int, struct proc *)
! 72: #define dev_type_strategy(n) void n(struct buf *)
! 73: #define dev_type_ioctl(n) \
! 74: int n(dev_t, u_long, caddr_t, int, struct proc *)
! 75:
! 76: #define dev_decl(n,t) __CONCAT(dev_type_,t)(__CONCAT(n,t))
! 77: #define dev_init(c,n,t) \
! 78: ((c) > 0 ? __CONCAT(n,t) : (__CONCAT(dev_type_,t)((*))) enxio)
! 79:
! 80: #endif /* _KERNEL */
! 81:
! 82: /*
! 83: * Block device switch table
! 84: */
! 85: struct bdevsw {
! 86: int (*d_open)(dev_t dev, int oflags, int devtype,
! 87: struct proc *p);
! 88: int (*d_close)(dev_t dev, int fflag, int devtype,
! 89: struct proc *p);
! 90: void (*d_strategy)(struct buf *bp);
! 91: int (*d_ioctl)(dev_t dev, u_long cmd, caddr_t data,
! 92: int fflag, struct proc *p);
! 93: int (*d_dump)(dev_t dev, daddr64_t blkno, caddr_t va,
! 94: size_t size);
! 95: daddr64_t (*d_psize)(dev_t dev);
! 96: u_int d_type;
! 97: /* u_int d_flags; */
! 98: };
! 99:
! 100: #ifdef _KERNEL
! 101:
! 102: extern struct bdevsw bdevsw[];
! 103:
! 104: /* bdevsw-specific types */
! 105: #define dev_type_dump(n) int n(dev_t, daddr64_t, caddr_t, size_t)
! 106: #define dev_type_size(n) daddr64_t n(dev_t)
! 107:
! 108: /* bdevsw-specific initializations */
! 109: #define dev_size_init(c,n) (c > 0 ? __CONCAT(n,size) : 0)
! 110:
! 111: #define bdev_decl(n) \
! 112: dev_decl(n,open); dev_decl(n,close); dev_decl(n,strategy); \
! 113: dev_decl(n,ioctl); dev_decl(n,dump); dev_decl(n,size)
! 114:
! 115: #define bdev_disk_init(c,n) { \
! 116: dev_init(c,n,open), dev_init(c,n,close), \
! 117: dev_init(c,n,strategy), dev_init(c,n,ioctl), \
! 118: dev_init(c,n,dump), dev_size_init(c,n), D_DISK }
! 119:
! 120: #define bdev_tape_init(c,n) { \
! 121: dev_init(c,n,open), dev_init(c,n,close), \
! 122: dev_init(c,n,strategy), dev_init(c,n,ioctl), \
! 123: dev_init(c,n,dump), 0, D_TAPE }
! 124:
! 125: #define bdev_swap_init(c,n) { \
! 126: (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
! 127: dev_init(c,n,strategy), (dev_type_ioctl((*))) enodev, \
! 128: (dev_type_dump((*))) enodev, 0 }
! 129:
! 130: #define bdev_lkm_dummy() { \
! 131: (dev_type_open((*))) lkmenodev, (dev_type_close((*))) enodev, \
! 132: (dev_type_strategy((*))) enodev, (dev_type_ioctl((*))) enodev, \
! 133: (dev_type_dump((*))) enodev, 0 }
! 134:
! 135: #define bdev_notdef() { \
! 136: (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
! 137: (dev_type_strategy((*))) enodev, (dev_type_ioctl((*))) enodev, \
! 138: (dev_type_dump((*))) enodev, 0 }
! 139:
! 140: #endif
! 141:
! 142: /*
! 143: * Character device switch table
! 144: */
! 145: struct cdevsw {
! 146: int (*d_open)(dev_t dev, int oflags, int devtype,
! 147: struct proc *p);
! 148: int (*d_close)(dev_t dev, int fflag, int devtype,
! 149: struct proc *);
! 150: int (*d_read)(dev_t dev, struct uio *uio, int ioflag);
! 151: int (*d_write)(dev_t dev, struct uio *uio, int ioflag);
! 152: int (*d_ioctl)(dev_t dev, u_long cmd, caddr_t data,
! 153: int fflag, struct proc *p);
! 154: int (*d_stop)(struct tty *tp, int rw);
! 155: struct tty *
! 156: (*d_tty)(dev_t dev);
! 157: int (*d_poll)(dev_t dev, int events, struct proc *p);
! 158: paddr_t (*d_mmap)(dev_t, off_t, int);
! 159: u_int d_type;
! 160: u_int d_flags;
! 161: int (*d_kqfilter)(dev_t dev, struct knote *kn);
! 162: };
! 163:
! 164: #ifdef _KERNEL
! 165:
! 166: extern struct cdevsw cdevsw[];
! 167:
! 168: /* cdevsw-specific types */
! 169: #define dev_type_read(n) int n(dev_t, struct uio *, int)
! 170: #define dev_type_write(n) int n(dev_t, struct uio *, int)
! 171: #define dev_type_stop(n) int n(struct tty *, int)
! 172: #define dev_type_tty(n) struct tty *n(dev_t)
! 173: #define dev_type_poll(n) int n(dev_t, int, struct proc *)
! 174: #define dev_type_mmap(n) paddr_t n(dev_t, off_t, int)
! 175: #define dev_type_kqfilter(n) int n(dev_t, struct knote *)
! 176:
! 177: #define cdev_decl(n) \
! 178: dev_decl(n,open); dev_decl(n,close); dev_decl(n,read); \
! 179: dev_decl(n,write); dev_decl(n,ioctl); dev_decl(n,stop); \
! 180: dev_decl(n,tty); dev_decl(n,poll); dev_decl(n,mmap); \
! 181: dev_decl(n,kqfilter)
! 182:
! 183: /* open, close, read, write, ioctl */
! 184: #define cdev_disk_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_type_stop((*))) enodev, \
! 187: 0, seltrue, (dev_type_mmap((*))) enodev, D_DISK, 0 }
! 188:
! 189: /* open, close, read, write, ioctl */
! 190: #define cdev_tape_init(c,n) { \
! 191: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 192: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 193: 0, seltrue, (dev_type_mmap((*))) enodev, D_TAPE }
! 194:
! 195: /* open, close, read, ioctl */
! 196: #define cdev_scanner_init(c,n) { \
! 197: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 198: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 199: (dev_type_stop((*))) nullop, \
! 200: 0, seltrue, (dev_type_mmap((*))) enodev }
! 201:
! 202: /* open, close, read, write, ioctl, stop, tty */
! 203: #define cdev_tty_init(c,n) { \
! 204: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 205: dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
! 206: dev_init(c,n,tty), ttpoll, (dev_type_mmap((*))) enodev, \
! 207: D_TTY, D_KQFILTER, ttkqfilter }
! 208:
! 209: /* open, close, read, ioctl, poll, nokqfilter */
! 210: #define cdev_mouse_init(c,n) { \
! 211: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 212: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 213: (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
! 214: (dev_type_mmap((*))) enodev }
! 215:
! 216: /* open, close, read, write, ioctl, poll, nokqfilter */
! 217: #define cdev_mousewr_init(c,n) { \
! 218: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 219: dev_init(c,n,write), dev_init(c,n,ioctl), \
! 220: (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
! 221: (dev_type_mmap((*))) enodev }
! 222:
! 223: #define cdev_lkm_dummy() { \
! 224: (dev_type_open((*))) lkmenodev, (dev_type_close((*))) enodev, \
! 225: (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
! 226: (dev_type_ioctl((*))) enodev, (dev_type_stop((*))) enodev, \
! 227: 0, seltrue, (dev_type_mmap((*))) enodev }
! 228:
! 229: #define cdev_notdef() { \
! 230: (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
! 231: (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
! 232: (dev_type_ioctl((*))) enodev, (dev_type_stop((*))) enodev, \
! 233: 0, seltrue, (dev_type_mmap((*))) enodev }
! 234:
! 235: /* open, close, read, write, ioctl, poll, kqfilter -- XXX should be a tty */
! 236: #define cdev_cn_init(c,n) { \
! 237: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 238: dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
! 239: 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
! 240: D_TTY, D_KQFILTER, dev_init(c,n,kqfilter) }
! 241:
! 242: /* open, read, write, ioctl, poll, kqfilter -- XXX should be a tty */
! 243: #define cdev_ctty_init(c,n) { \
! 244: dev_init(c,n,open), (dev_type_close((*))) nullop, dev_init(c,n,read), \
! 245: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) nullop, \
! 246: 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
! 247: D_TTY, D_KQFILTER, ttkqfilter }
! 248:
! 249: /* open, close, read, write, ioctl, mmap */
! 250: #define cdev_mm_init(c,n) { \
! 251: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 252: dev_init(c,n,write), dev_init(c,n,ioctl), \
! 253: (dev_type_stop((*))) enodev, 0, seltrue, dev_init(c,n,mmap) }
! 254:
! 255: /* open, close, read, write, ioctl, mmap */
! 256: #define cdev_crypto_init(c,n) { \
! 257: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 258: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 259: 0, (dev_type_poll((*))) enodev, (dev_type_mmap((*))) enodev }
! 260:
! 261: /* open, close, read, write, ioctl */
! 262: #define cdev_systrace_init(c,n) { \
! 263: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 264: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 265: 0, (dev_type_poll((*))) enodev, (dev_type_mmap((*))) enodev }
! 266:
! 267: /* read, write */
! 268: #define cdev_swap_init(c,n) { \
! 269: (dev_type_open((*))) nullop, (dev_type_close((*))) nullop, \
! 270: dev_init(c,n,read), dev_init(c,n,write), (dev_type_ioctl((*))) enodev, \
! 271: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 272: (dev_type_mmap((*))) enodev }
! 273:
! 274: /* open, close, read, write, ioctl, tty, poll, kqfilter */
! 275: #define cdev_ptc_init(c,n) { \
! 276: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 277: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) nullop, \
! 278: dev_init(c,n,tty), dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
! 279: D_TTY, D_KQFILTER, dev_init(c,n,kqfilter) }
! 280:
! 281: /* open, close, read, write, ioctl, mmap */
! 282: #define cdev_ptm_init(c,n) { \
! 283: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 284: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 285: 0, (dev_type_poll((*))) enodev, (dev_type_mmap((*))) enodev }
! 286:
! 287: /* open, close, read, ioctl, poll, kqfilter XXX should be a generic device */
! 288: #define cdev_log_init(c,n) { \
! 289: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 290: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 291: (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
! 292: (dev_type_mmap((*))) enodev, 0, D_KQFILTER, dev_init(c,n,kqfilter) }
! 293:
! 294: /* open */
! 295: #define cdev_fd_init(c,n) { \
! 296: dev_init(c,n,open), (dev_type_close((*))) enodev, \
! 297: (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
! 298: (dev_type_ioctl((*))) enodev, (dev_type_stop((*))) enodev, \
! 299: 0, (dev_type_poll((*))) enodev, (dev_type_mmap((*))) enodev }
! 300:
! 301: /* open, close, read, write, ioctl, poll, kqfilter -- XXX should be generic device */
! 302: #define cdev_bpftun_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), (dev_type_stop((*))) enodev, \
! 305: 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
! 306: 0, D_KQFILTER, dev_init(c,n,kqfilter) }
! 307:
! 308: /* open, close, ioctl */
! 309: #define cdev_lkm_init(c,n) { \
! 310: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 311: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 312: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 313: (dev_type_mmap((*))) enodev }
! 314:
! 315: /* open, close, ioctl */
! 316: #define cdev_ch_init(c,n) { \
! 317: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 318: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 319: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 320: (dev_type_mmap((*))) enodev }
! 321:
! 322: /* open, close, ioctl */
! 323: #define cdev_uk_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, (dev_type_poll((*))) enodev, \
! 327: (dev_type_mmap((*))) enodev }
! 328:
! 329: /* open, close, read, ioctl */
! 330: #define cdev_ss_init(c,n) { \
! 331: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 332: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 333: (dev_type_stop((*))) enodev, 0, seltrue, \
! 334: (dev_type_mmap((*))) enodev }
! 335:
! 336: /* open, close, ioctl, mmap */
! 337: #define cdev_fb_init(c,n) { \
! 338: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 339: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 340: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 341: dev_init(c,n,mmap) }
! 342:
! 343: /* open, close, read, write, ioctl, poll, kqfilter */
! 344: #define cdev_audio_init(c,n) { \
! 345: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 346: dev_init(c,n,write), dev_init(c,n,ioctl), \
! 347: (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
! 348: dev_init(c,n,mmap), 0, D_KQFILTER, dev_init(c,n,kqfilter) }
! 349:
! 350: /* open, close, read, write, ioctl, poll, nokqfilter */
! 351: #define cdev_midi_init(c,n) { \
! 352: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 353: dev_init(c,n,write), dev_init(c,n,ioctl), \
! 354: (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
! 355: (dev_type_mmap((*))) enodev }
! 356:
! 357: #define cdev_svr4_net_init(c,n) { \
! 358: dev_init(c,n,open), (dev_type_close((*))) enodev, \
! 359: (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
! 360: (dev_type_ioctl((*))) enodev, (dev_type_stop((*))) nullop, \
! 361: 0, (dev_type_poll((*))) enodev, (dev_type_mmap((*))) enodev }
! 362:
! 363: /* open, close, read, write, ioctl, poll, nokqfilter */
! 364: #define cdev_xfs_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), \
! 367: (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
! 368: (dev_type_mmap((*))) enodev }
! 369:
! 370: /* open, close, read */
! 371: #define cdev_ksyms_init(c,n) { \
! 372: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 373: (dev_type_write((*))) enodev, (dev_type_ioctl((*))) enodev, \
! 374: (dev_type_stop((*))) enodev, 0, seltrue, \
! 375: (dev_type_mmap((*))) enodev, 0 }
! 376:
! 377: /* open, close, read, write, ioctl, stop, tty, poll, mmap, kqfilter */
! 378: #define cdev_wsdisplay_init(c,n) { \
! 379: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 380: dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
! 381: dev_init(c,n,tty), ttpoll, dev_init(c,n,mmap), \
! 382: 0, D_KQFILTER, dev_init(c,n,kqfilter) }
! 383:
! 384: /* open, close, read, write, ioctl, poll, kqfilter */
! 385: #define cdev_random_init(c,n) { \
! 386: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 387: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 388: 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
! 389: 0, D_KQFILTER, dev_init(c,n,kqfilter) }
! 390: void randomattach(void);
! 391:
! 392: /* open, close, ioctl, poll, nokqfilter */
! 393: #define cdev_usb_init(c,n) { \
! 394: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 395: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 396: (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
! 397: (dev_type_mmap((*))) enodev }
! 398:
! 399: /* open, close, write, ioctl */
! 400: #define cdev_ulpt_init(c,n) { \
! 401: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 402: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 403: 0, (dev_type_poll((*))) enodev, (dev_type_mmap((*))) enodev }
! 404:
! 405: /* open, close, ioctl */
! 406: #define cdev_pf_init(c,n) { \
! 407: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 408: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 409: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 410: (dev_type_mmap((*))) enodev }
! 411:
! 412: /* open, close, read, write, ioctl, poll, nokqfilter */
! 413: #define cdev_urio_init(c,n) { \
! 414: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 415: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 416: 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev }
! 417:
! 418: /* open, close, read, write, ioctl, poll, kqfilter */
! 419: #define cdev_usbdev_init(c,n) { \
! 420: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 421: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 422: 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, 0, D_KQFILTER, \
! 423: dev_init(c,n,kqfilter) }
! 424:
! 425: /* open, close, init */
! 426: #define cdev_pci_init(c,n) { \
! 427: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 428: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 429: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 430: (dev_type_mmap((*))) enodev }
! 431:
! 432: /* open, close, init */
! 433: #define cdev_iop_init(c,n) { \
! 434: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 435: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 436: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 437: (dev_type_mmap((*))) enodev }
! 438:
! 439: /* open, close, ioctl */
! 440: #define cdev_radio_init(c,n) { \
! 441: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 442: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 443: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 444: (dev_type_mmap((*))) enodev }
! 445:
! 446: /* open, close, write, ioctl */
! 447: #define cdev_spkr_init(c,n) { \
! 448: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 449: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 450: 0, seltrue, (dev_type_mmap((*))) enodev }
! 451:
! 452: /* open, close, write, ioctl */
! 453: #define cdev_lpt_init(c,n) { \
! 454: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 455: dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
! 456: 0, seltrue, (dev_type_mmap((*))) enodev }
! 457:
! 458: /* open, close, read, ioctl, mmap */
! 459: #define cdev_bktr_init(c, n) { \
! 460: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 461: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 462: (dev_type_stop((*))) enodev, 0, seltrue, \
! 463: dev_init(c,n,mmap) }
! 464:
! 465: /* open, close, read, ioctl, poll, kqfilter */
! 466: #define cdev_hotplug_init(c,n) { \
! 467: dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
! 468: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 469: (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
! 470: (dev_type_mmap((*))) enodev, 0, D_KQFILTER, dev_init(c,n,kqfilter) }
! 471:
! 472: /* open, close, ioctl */
! 473: #define cdev_gpio_init(c,n) { \
! 474: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 475: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 476: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 477: (dev_type_mmap((*))) enodev }
! 478:
! 479: /* open, close, ioctl */
! 480: #define cdev_bio_init(c,n) { \
! 481: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 482: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 483: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 484: (dev_type_mmap((*))) enodev }
! 485:
! 486: /* open, close, ioctl */
! 487: #define cdev_bthub_init(c,n) { \
! 488: dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
! 489: (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
! 490: (dev_type_stop((*))) enodev, 0, (dev_type_poll((*))) enodev, \
! 491: (dev_type_mmap((*))) enodev }
! 492:
! 493: #endif
! 494:
! 495: /*
! 496: * Line discipline switch table
! 497: */
! 498: struct linesw {
! 499: int (*l_open)(dev_t dev, struct tty *tp);
! 500: int (*l_close)(struct tty *tp, int flags);
! 501: int (*l_read)(struct tty *tp, struct uio *uio,
! 502: int flag);
! 503: int (*l_write)(struct tty *tp, struct uio *uio,
! 504: int flag);
! 505: int (*l_ioctl)(struct tty *tp, u_long cmd, caddr_t data,
! 506: int flag, struct proc *p);
! 507: int (*l_rint)(int c, struct tty *tp);
! 508: int (*l_start)(struct tty *tp);
! 509: int (*l_modem)(struct tty *tp, int flag);
! 510: };
! 511:
! 512: #ifdef _KERNEL
! 513: extern struct linesw linesw[];
! 514: #endif
! 515:
! 516: /*
! 517: * Swap device table
! 518: */
! 519: struct swdevt {
! 520: dev_t sw_dev;
! 521: int sw_flags;
! 522: struct vnode *sw_vp;
! 523: };
! 524: #define SW_FREED 0x01
! 525: #define SW_SEQUENTIAL 0x02
! 526: #define sw_freed sw_flags /* XXX compat */
! 527:
! 528: #ifdef _KERNEL
! 529: extern struct swdevt swdevt[];
! 530: extern int chrtoblktbl[];
! 531: extern int nchrtoblktbl;
! 532:
! 533: struct bdevsw *bdevsw_lookup(dev_t);
! 534: struct cdevsw *cdevsw_lookup(dev_t);
! 535: int chrtoblk(dev_t);
! 536: int blktochr(dev_t);
! 537: int iskmemdev(dev_t);
! 538: int iszerodev(dev_t);
! 539: dev_t getnulldev(void);
! 540:
! 541: cdev_decl(filedesc);
! 542:
! 543: cdev_decl(log);
! 544:
! 545: #ifndef LKM
! 546: # define NLKM 0
! 547: # define lkmenodev enodev
! 548: #else
! 549: # define NLKM 1
! 550: #endif
! 551: cdev_decl(lkm);
! 552:
! 553: #define ptstty ptytty
! 554: #define ptsioctl ptyioctl
! 555: cdev_decl(pts);
! 556:
! 557: #define ptctty ptytty
! 558: #define ptcioctl ptyioctl
! 559: cdev_decl(ptc);
! 560:
! 561: cdev_decl(ptm);
! 562:
! 563: cdev_decl(ctty);
! 564:
! 565: cdev_decl(audio);
! 566: cdev_decl(midi);
! 567: cdev_decl(sequencer);
! 568: cdev_decl(radio);
! 569: cdev_decl(cn);
! 570:
! 571: bdev_decl(sw);
! 572: cdev_decl(sw);
! 573:
! 574: bdev_decl(vnd);
! 575: cdev_decl(vnd);
! 576:
! 577: bdev_decl(ccd);
! 578: cdev_decl(ccd);
! 579:
! 580: bdev_decl(raid);
! 581: cdev_decl(raid);
! 582:
! 583: cdev_decl(iop);
! 584:
! 585: cdev_decl(ch);
! 586:
! 587: cdev_decl(ss);
! 588:
! 589: bdev_decl(sd);
! 590: cdev_decl(sd);
! 591:
! 592: cdev_decl(ses);
! 593:
! 594: bdev_decl(st);
! 595: cdev_decl(st);
! 596:
! 597: bdev_decl(cd);
! 598: cdev_decl(cd);
! 599:
! 600: bdev_decl(rd);
! 601: cdev_decl(rd);
! 602:
! 603: bdev_decl(uk);
! 604: cdev_decl(uk);
! 605:
! 606: cdev_decl(bpf);
! 607:
! 608: cdev_decl(pf);
! 609:
! 610: cdev_decl(tun);
! 611:
! 612: cdev_decl(random);
! 613:
! 614: cdev_decl(wsdisplay);
! 615: cdev_decl(wskbd);
! 616: cdev_decl(wsmouse);
! 617: cdev_decl(wsmux);
! 618:
! 619: #ifdef COMPAT_SVR4
! 620: # define NSVR4_NET 1
! 621: #else
! 622: # define NSVR4_NET 0
! 623: #endif
! 624: cdev_decl(svr4_net);
! 625:
! 626: cdev_decl(ksyms);
! 627:
! 628: cdev_decl(crypto);
! 629:
! 630: cdev_decl(systrace);
! 631:
! 632: cdev_decl(bio);
! 633: cdev_decl(bthub);
! 634:
! 635: cdev_decl(gpr);
! 636: cdev_decl(bktr);
! 637:
! 638: cdev_decl(usb);
! 639: cdev_decl(ugen);
! 640: cdev_decl(uhid);
! 641: cdev_decl(ucom);
! 642: cdev_decl(ulpt);
! 643: cdev_decl(uscanner);
! 644: cdev_decl(urio);
! 645:
! 646: cdev_decl(hotplug);
! 647: cdev_decl(gpio);
! 648:
! 649: #endif
! 650:
! 651: #endif /* _SYS_CONF_H_ */
CVSweb