root/sys/conf.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    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_ */

/* [<][>][^][v][top][bottom][index][help] */