[BACK]Return to conf.h CVS log [TXT][DIR] Up to [local] / sys / sys

Annotation of sys/sys/conf.h, Revision 1.1.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