The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/conf.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: d957e242ad6aaf757527813cca88c2d5


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.