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/bsd/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 /*
    2  * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
   26 /*-
   27  * Copyright (c) 1990, 1993
   28  *      The Regents of the University of California.  All rights reserved.
   29  * (c) UNIX System Laboratories, Inc.
   30  * All or some portions of this file are derived from material licensed
   31  * to the University of California by American Telephone and Telegraph
   32  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
   33  * the permission of UNIX System Laboratories, Inc.
   34  *
   35  * Redistribution and use in source and binary forms, with or without
   36  * modification, are permitted provided that the following conditions
   37  * are met:
   38  * 1. Redistributions of source code must retain the above copyright
   39  *    notice, this list of conditions and the following disclaimer.
   40  * 2. Redistributions in binary form must reproduce the above copyright
   41  *    notice, this list of conditions and the following disclaimer in the
   42  *    documentation and/or other materials provided with the distribution.
   43  * 3. All advertising materials mentioning features or use of this software
   44  *    must display the following acknowledgement:
   45  *      This product includes software developed by the University of
   46  *      California, Berkeley and its contributors.
   47  * 4. Neither the name of the University nor the names of its contributors
   48  *    may be used to endorse or promote products derived from this software
   49  *    without specific prior written permission.
   50  *
   51  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   52  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   53  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   54  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   55  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   56  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   57  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   58  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   59  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   60  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   61  * SUCH DAMAGE.
   62  *
   63  *      @(#)conf.h      8.5 (Berkeley) 1/9/95
   64  */
   65 
   66 #ifndef _SYS_CONF_H_
   67 #define _SYS_CONF_H_ 1
   68 
   69 #include <sys/appleapiopts.h>
   70 #include <sys/cdefs.h>
   71 
   72 /*
   73  * Definitions of device driver entry switches
   74  */
   75 
   76 struct buf;
   77 struct proc;
   78 struct tty;
   79 struct uio;
   80 struct vnode;
   81 
   82 #ifdef __APPLE_API_UNSTABLE
   83 /* 
   84  * Device switch function types.
   85  */
   86 typedef int  open_close_fcn_t   __P((dev_t dev, int flags, int devtype,
   87                                      struct proc *p));
   88 
   89 typedef struct tty *d_devtotty_t __P((dev_t dev));
   90 
   91 typedef void strategy_fcn_t     __P((struct buf *bp));
   92 typedef int  ioctl_fcn_t        __P((dev_t dev, u_long cmd, caddr_t data,
   93                                      int fflag, struct proc *p));
   94 typedef int  dump_fcn_t ();     /* parameters vary by architecture */
   95 typedef int  psize_fcn_t        __P((dev_t dev));
   96 typedef int  read_write_fcn_t   __P((dev_t dev, struct uio *uio, int ioflag));
   97 typedef int  stop_fcn_t         __P((struct tty *tp, int rw));
   98 typedef int  reset_fcn_t        __P((int uban));
   99 typedef int  select_fcn_t       __P((dev_t dev, int which, void * wql, struct proc *p));
  100 typedef int  mmap_fcn_t         __P(());
  101 typedef int  getc_fcn_t         __P((dev_t dev));
  102 typedef int  putc_fcn_t         __P((dev_t dev, char c));
  103 typedef int  d_poll_t           __P((dev_t dev, int events, struct proc *p));
  104 
  105 #define d_open_t        open_close_fcn_t
  106 #define d_close_t       open_close_fcn_t
  107 #define d_read_t        read_write_fcn_t
  108 #define d_write_t       read_write_fcn_t
  109 #define d_ioctl_t       ioctl_fcn_t
  110 #define d_stop_t        stop_fcn_t
  111 #define d_reset_t       reset_fcn_t
  112 #define d_select_t      select_fcn_t
  113 #define d_mmap_t        mmap_fcn_t
  114 #define d_strategy_t    strategy_fcn_t
  115 #define d_getc_t        getc_fcn_t
  116 #define d_putc_t        putc_fcn_t
  117 
  118 __BEGIN_DECLS
  119 int     enodev ();              /* avoid actual prototype for multiple use */
  120 void    enodev_strat();
  121 __END_DECLS
  122 
  123 /*
  124  * Versions of enodev() pointer, cast to appropriate function type. For use
  125  * in empty devsw slots.
  126  */
  127 #define eno_opcl                ((open_close_fcn_t *)&enodev)
  128 #define eno_strat               ((strategy_fcn_t *)&enodev_strat)
  129 #define eno_ioctl               ((ioctl_fcn_t *)&enodev)
  130 #define eno_dump                ((dump_fcn_t *)&enodev)
  131 #define eno_psize               ((psize_fcn_t *)&enodev)
  132 #define eno_rdwrt               ((read_write_fcn_t *)&enodev)
  133 #define eno_stop                ((stop_fcn_t *)&enodev)
  134 #define eno_reset               ((reset_fcn_t *)&enodev)
  135 #define eno_mmap                ((mmap_fcn_t *)&enodev)
  136 #define eno_getc                ((getc_fcn_t *)&enodev)
  137 #define eno_putc                ((putc_fcn_t *)&enodev)
  138 #define eno_select              ((select_fcn_t *)&enodev)
  139 
  140 /*
  141  * Types for d_type.
  142  */
  143 #define D_TAPE  1
  144 #define D_DISK  2
  145 #define D_TTY   3
  146 
  147 /*
  148  * Block device switch table
  149  */
  150 struct bdevsw {
  151         open_close_fcn_t        *d_open;
  152         open_close_fcn_t        *d_close;
  153         strategy_fcn_t          *d_strategy;
  154         ioctl_fcn_t             *d_ioctl;
  155         dump_fcn_t              *d_dump;
  156         psize_fcn_t             *d_psize;
  157         int                     d_type;
  158 };
  159 
  160 #ifdef KERNEL
  161 
  162 d_devtotty_t    nodevtotty;
  163 d_write_t       nowrite;
  164 
  165 #ifdef __APPLE_API_PRIVATE
  166 extern struct bdevsw bdevsw[];
  167 #endif /* __APPLE_API_PRIVATE */
  168 
  169 /*
  170  * Contents of empty bdevsw slot.
  171  */
  172 #define  NO_BDEVICE                                             \
  173         { eno_opcl,     eno_opcl,       eno_strat, eno_ioctl,   \
  174           eno_dump,     eno_psize,      0       }
  175           
  176 #endif /* KERNEL */
  177 
  178 /*
  179  * Character device switch table
  180  */
  181 struct cdevsw {
  182         open_close_fcn_t        *d_open;
  183         open_close_fcn_t        *d_close;
  184         read_write_fcn_t        *d_read;
  185         read_write_fcn_t        *d_write;
  186         ioctl_fcn_t             *d_ioctl;
  187         stop_fcn_t              *d_stop;
  188         reset_fcn_t             *d_reset;
  189         struct  tty             **d_ttys;
  190         select_fcn_t            *d_select;
  191         mmap_fcn_t              *d_mmap;
  192         strategy_fcn_t          *d_strategy;
  193         getc_fcn_t              *d_getc;
  194         putc_fcn_t              *d_putc;
  195         int                     d_type;
  196 };
  197 
  198 #ifdef KERNEL
  199 
  200 #ifdef __APPLE_API_PRIVATE
  201 extern struct cdevsw cdevsw[];
  202 #endif /* __APPLE_API_PRIVATE */
  203 
  204 /*
  205  * Contents of empty cdevsw slot.
  206  */
  207 
  208 #define  NO_CDEVICE                                                      \
  209     {                                                                   \
  210         eno_opcl,       eno_opcl,       eno_rdwrt,      eno_rdwrt,      \
  211         eno_ioctl,      eno_stop,       eno_reset,      0,              \
  212         (select_fcn_t *)seltrue,        eno_mmap,       eno_strat,      eno_getc,       \
  213         eno_putc,       0                                               \
  214     }
  215 #endif /* KERNEL */
  216     
  217 /*
  218  * Line discipline switch table
  219  */
  220 struct linesw {
  221         int     (*l_open)       __P((dev_t dev, struct tty *tp));
  222         int     (*l_close)      __P((struct tty *tp, int flags));
  223         int     (*l_read)       __P((struct tty *tp, struct uio *uio,
  224                                      int flag));
  225         int     (*l_write)      __P((struct tty *tp, struct uio *uio,
  226                                      int flag));
  227         int     (*l_ioctl)      __P((struct tty *tp, u_long cmd, caddr_t data,
  228                                      int flag, struct proc *p));
  229         int     (*l_rint)       __P((int c, struct tty *tp));
  230         int     (*l_start)      __P((struct tty *tp));
  231         int     (*l_modem)      __P((struct tty *tp, int flag));
  232 };
  233 
  234 #ifdef KERNEL
  235 
  236 #ifdef __APPLE_API_PRIVATE
  237 extern struct linesw linesw[];
  238 extern int nlinesw;
  239 #endif /* __APPLE_API_PRIVATE */
  240  
  241 int ldisc_register __P((int , struct linesw *));
  242 void ldisc_deregister __P((int));
  243 #define LDISC_LOAD      -1              /* Loadable line discipline */
  244 
  245 #endif /* KERNEL */
  246 
  247 #ifdef __APPLE_API_OBSOLETE
  248 /*
  249  * Swap device table
  250  */
  251 struct swdevt {
  252         dev_t   sw_dev;
  253         int     sw_flags;
  254         int     sw_nblks;
  255         struct  vnode *sw_vp;
  256 };
  257 #define SW_FREED        0x01
  258 #define SW_SEQUENTIAL   0x02
  259 #define sw_freed        sw_flags        /* XXX compat */
  260 
  261 #ifdef KERNEL
  262 extern struct swdevt swdevt[];
  263 #endif /* KERNEL */
  264 
  265 #endif /* __APPLE_API_OBSOLETE */
  266 
  267 
  268 #ifdef KERNEL
  269 /*
  270  * ***_free finds free slot;
  271  * ***_add adds entries to the devsw table
  272  * If int arg is -1; finds a free slot
  273  * Returns the major number if successful
  274  *  else -1
  275  */
  276 __BEGIN_DECLS
  277 int  bdevsw_isfree __P((int));
  278 int  bdevsw_add __P((int, struct bdevsw *));
  279 int  bdevsw_remove __P((int, struct bdevsw *));
  280 int  cdevsw_isfree __P((int));
  281 int  cdevsw_add __P((int, struct cdevsw *));
  282 int  cdevsw_remove __P((int, struct cdevsw *));
  283 __END_DECLS
  284 #endif /* KERNEL */
  285 
  286 #endif /* __APPLE_API_UNSTABLE */
  287 
  288 #endif /* _SYS_CONF_H_ */

Cache object: e05a0847fe6301d7d9fd7a08364b948f


[ 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.