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/i386at/conf.c

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  * Mach Operating System
    3  * Copyright (c) 1993-1989 Carnegie Mellon University
    4  * All Rights Reserved.
    5  * 
    6  * Permission to use, copy, modify and distribute this software and its
    7  * documentation is hereby granted, provided that both the copyright
    8  * notice and this permission notice appear in all copies of the
    9  * software, derivative works or modified versions, and any portions
   10  * thereof, and that both notices appear in supporting documentation.
   11  * 
   12  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
   13  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
   14  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
   15  * 
   16  * Carnegie Mellon requests users of this software to return to
   17  * 
   18  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
   19  *  School of Computer Science
   20  *  Carnegie Mellon University
   21  *  Pittsburgh PA 15213-3890
   22  * 
   23  * any improvements or extensions that they make and grant Carnegie Mellon
   24  * the rights to redistribute these changes.
   25  */
   26 /* 
   27  * HISTORY
   28  * $Log:        conf.c,v $
   29  * Revision 2.17  93/11/17  16:43:24  dbg
   30  *      Added "mc" and "clockpit" devices for new clocks and
   31  *      timers.
   32  *      [93/05/21            dbg]
   33  * 
   34  * Revision 2.16  93/05/17  15:04:47  rvb
   35  *      Type casts, etc to quiet gcc 2.3.3 warnings
   36  *      [93/05/17            rvb]
   37  * 
   38  * Revision 2.15  93/03/09  10:54:33  danner
   39  *      Added SCSI CD-ROM Audio.  Added back SCSI processor links.
   40  *      [93/03/06            af]
   41  * 
   42  * Revision 2.14  93/02/05  08:18:31  danner
   43  *      Added include.
   44  *      [93/02/04            danner]
   45  * 
   46  * Revision 2.13  93/01/24  13:15:14  danner
   47  *      Add d-link "600" ethernet device "de"
   48  *      [92/08/13            rvb]
   49  * 
   50  * Revision 2.12  92/02/19  16:29:40  elf
   51  *      Add lpr and par devices.  (taken from 2.5)
   52  *      [92/02/13            rvb]
   53  * 
   54  * Revision 2.11  92/01/03  20:39:53  dbg
   55  *      Added devinfo routine to scsi to accomodate MI change
   56  *      that screwed up extra large writes.
   57  *      [91/12/26  11:06:54  af]
   58  * 
   59  * Revision 2.10  91/08/28  11:11:37  jsb
   60  *      Fixed field-describing comment in dev_name_list definition.
   61  *      [91/08/27  17:52:06  jsb]
   62  * 
   63  *      Convert bsize entries to devinfo entries.  Add nodev entries for
   64  *      devices that don't support devinfo.
   65  *      [91/08/15  18:43:13  jsb]
   66  * 
   67  *      Add block size entries for hd and fd.
   68  *      [91/08/12  17:32:55  dlb]
   69  * 
   70  * Revision 2.9  91/08/24  11:57:26  af
   71  *      Added SCSI disks, tapes, and cpus.
   72  *      [91/08/02  02:56:08  af]
   73  * 
   74  * Revision 2.8  91/05/14  16:22:01  mrt
   75  *      Correcting copyright
   76  * 
   77  * Revision 2.7  91/02/14  14:42:13  mrt
   78  *      Allow com driver and distinguish EtherLinkII from wd8003
   79  *      [91/01/28  15:27:02  rvb]
   80  * 
   81  * Revision 2.6  91/02/05  17:16:44  mrt
   82  *      Changed to new Mach copyright
   83  *      [91/02/01  17:42:38  mrt]
   84  * 
   85  * Revision 2.5  91/01/08  17:32:42  rpd
   86  *      Support for get/set status on hd and fd.
   87  *      Also fd has 64 minor devices per unit.
   88  *      Switch wd8003 -> ns8390
   89  *      [91/01/04  12:17:15  rvb]
   90  * 
   91  * Revision 2.4  90/10/01  14:23:02  jeffreyh
   92  *      added wd8003 ethernet driver
   93  *      [90/09/27  18:23:53  jeffreyh]
   94  * 
   95  * Revision 2.3  90/05/21  13:26:53  dbg
   96  *      Add mouse, keyboard, IOPL devices.
   97  *      [90/05/17            dbg]
   98  * 
   99  * Revision 2.2  90/05/03  15:41:34  dbg
  100  *      Add 3c501 under name 'et'.
  101  *      [90/04/27            dbg]
  102  * 
  103  *      Created.
  104  *      [90/02/20            dbg]
  105  * 
  106  */
  107 
  108 /*
  109  * Device switch for i386 AT bus.
  110  */
  111 
  112 #include <mach/machine/vm_types.h>
  113 #include <kern/assert.h>
  114 #include <device/conf.h>
  115 
  116 extern vm_offset_t block_io_mmap();
  117 
  118 extern int      timeopen(), timeclose();
  119 extern vm_offset_t timemmap();
  120 #define timename                "time"
  121 
  122 #include <hd.h>
  123 #if     NHD > 0
  124 extern int      hdopen(), hdclose(), hdread(), hdwrite();
  125 extern int      hdgetstat(), hdsetstat(), hddevinfo();
  126 #define hdname                  "hd"
  127 #endif  /* NHD > 0 */
  128 
  129 #include <aha.h>
  130 #if     NAHA > 0
  131 int     rz_open(), rz_close(), rz_read(), rz_write();
  132 int     rz_get_status(), rz_set_status(), rz_devinfo();
  133 int     cd_open(), cd_close(), cd_read(), cd_write();
  134 #define rzname "sd"
  135 #define tzname "st"
  136 #define scname "sc"     /* processors */
  137 #define cdname  "cd_audio"      /* CD-ROM DA */
  138 
  139 #endif  /* NAHA > 0 */
  140 
  141 #include <fd.h>
  142 #if     NFD > 0
  143 extern int      fdopen(), fdclose(), fdread(), fdwrite();
  144 extern int      fdgetstat(), fdsetstat(), fddevinfo();
  145 #define fdname                  "fd"
  146 #endif  /* NFD > 0 */
  147 
  148 #include <wt.h>
  149 #if     NWT > 0
  150 extern int      wtopen(), wtread(), wtwrite(), wtclose();
  151 #define wtname                  "wt"
  152 #endif  /* NWT > 0 */
  153 
  154 #include <pc586.h>
  155 #if     NPC586 > 0
  156 extern int      pc586open(), pc586output(), pc586getstat(), pc586setstat(),
  157                 pc586setinput();
  158 #define pc586name               "pc"
  159 #endif  /* NPC586 > 0 */
  160 
  161 #include <ns8390.h>
  162 #if     NNS8390 > 0
  163 extern int      wd8003open(), eliiopen();
  164 extern int      ns8390output(), ns8390getstat(), ns8390setstat(), 
  165                 ns8390setinput();
  166 #define ns8390wdname            "wd"
  167 #define ns8390elname            "el"
  168 #endif  /* NNS8390 > 0 */
  169 
  170 #include <at3c501.h>
  171 #if     NAT3C501 > 0
  172 extern int      at3c501open(), at3c501output(),
  173                 at3c501getstat(), at3c501setstat(),
  174                 at3c501setinput();
  175 #define at3c501name             "et"
  176 #endif  /* NAT3C501 > 0 */
  177 
  178 #include <par.h>
  179 #if     NPAR > 0
  180 extern int      paropen(), paroutput(), pargetstat(), parsetstat(),
  181                 parsetinput();
  182 #define parname         "par"
  183 #endif  /* NPAR > 0 */
  184 
  185 #include <de6c.h>
  186 #if     NDE6C > 0
  187 extern int      de6copen(), de6coutput(), de6cgetstat(), de6csetstat(),
  188                 de6csetinput();
  189 #define de6cname                "de"
  190 #endif  /* NDE6C > 0 */
  191 
  192 extern int      kdopen(), kdclose(), kdread(), kdwrite();
  193 extern int      kdgetstat(), kdsetstat(), kdportdeath();
  194 extern vm_offset_t kdmmap();
  195 #define kdname                  "kd"
  196 
  197 #include <com.h>
  198 #if     NCOM > 0
  199 extern int      comopen(), comclose(), comread(), comwrite();
  200 extern int      comgetstat(), comsetstat(), comportdeath();
  201 #define comname                 "com"
  202 #endif  /* NCOM > 0 */
  203 
  204 #include <lpr.h>
  205 #if     NLPR > 0
  206 extern int      lpropen(), lprclose(), lprread(), lprwrite();
  207 extern int      lprgetstat(), lprsetstat(), lprportdeath();
  208 #define lprname                 "lpr"
  209 #endif  /* NLPR > 0 */
  210 
  211 #include <blit.h>
  212 #if NBLIT > 0
  213 extern int      blitopen(), blitclose(), blit_get_stat();
  214 extern vm_offset_t blitmmap();
  215 #define blitname                "blit"
  216 
  217 extern int      mouseinit(), mouseopen(), mouseclose();
  218 extern int      mouseioctl(), mouseselect(), mouseread();
  219 #endif
  220 
  221 extern int      kbdopen(), kbdclose(), kbdread();
  222 extern int      kbdgetstat(), kbdsetstat();
  223 #define kbdname                 "kbd"
  224 
  225 extern int      mouseopen(), mouseclose(), mouseread();
  226 #define mousename               "mouse"
  227 
  228 extern int      ioplopen(), ioplclose();
  229 extern vm_offset_t ioplmmap();
  230 #define ioplname                "iopl"
  231 
  232 #include <mc.h>
  233 #if     NMC > 0
  234 extern int      mc_open(), mc_close(), mc_getstat();
  235 extern int      mc_setstat(), mc_devinfo();
  236 extern vm_offset_t mc_mmap();
  237 #define mc_name         "mc"
  238 #endif  /* NMC > 0 */
  239 
  240 #include <clockpit.h>
  241 #if     NCLOCKPIT > 0
  242 extern int      clockpitopen(), clockpitclose(), clockpitgetstat();
  243 extern int      clockpitsetstat(), clockpitinfo();
  244 extern vm_offset_t clockpitmmap();
  245 #define clockpitname            "clockpit"
  246 #endif  /* NCLOCKPIT > 0 */
  247 
  248 /*
  249  * List of devices - console must be at slot 0
  250  */
  251 struct dev_ops  dev_name_list[] =
  252 {
  253         /*name,         open,           close,          read,
  254           write,        getstat,        setstat,        mmap,
  255           async_in,     reset,          port_death,     subdev,
  256           dev_info */
  257 
  258         { kdname,       kdopen,         kdclose,        kdread,
  259           kdwrite,      kdgetstat,      kdsetstat,      kdmmap,
  260           nodev,        nulldev,        kdportdeath,    0,
  261           nodev },
  262 
  263         { timename,     timeopen,       timeclose,      nulldev,
  264           nulldev,      nulldev,        nulldev,        timemmap,
  265           nodev,        nulldev,        nulldev,        0,
  266           nodev },
  267 
  268 #if     NHD > 0
  269         { hdname,       hdopen,         hdclose,        hdread,
  270           hdwrite,      hdgetstat,      hdsetstat,      nomap,
  271           nodev,        nulldev,        nulldev,        16,
  272           hddevinfo },
  273 #endif  NHD > 0
  274 
  275 #if     NAHA > 0
  276         { rzname,       rz_open,        rz_close,       rz_read,
  277           rz_write,     rz_get_status,  rz_set_status,  nomap,
  278           nodev,        nulldev,        nulldev,        8,
  279           rz_devinfo },
  280 
  281         { tzname,       rz_open,        rz_close,       rz_read,
  282           rz_write,     rz_get_status,  rz_set_status,  nomap,
  283           nodev,        nulldev,        nulldev,        8,
  284           nodev },
  285 
  286         { cdname,       cd_open,        cd_close,       cd_read,
  287           cd_write,     nodev,          nodev,          nomap,
  288           nodev,        nulldev,        nulldev,        8,
  289           nodev },
  290 
  291         { scname,       rz_open,        rz_close,       rz_read,
  292           rz_write,     rz_get_status,  rz_set_status,  nomap,
  293           nodev,        nulldev,        nulldev,        8,
  294           nodev },
  295 
  296 #endif  /* NAHA > 0 */
  297 
  298 #if     NFD > 0
  299         { fdname,       fdopen,         fdclose,        fdread,
  300           fdwrite,      fdgetstat,      fdsetstat,      nomap,
  301           nodev,        nulldev,        nulldev,        64,
  302           fddevinfo },
  303 #endif  NFD > 0
  304 
  305 #if     NWT > 0
  306         { wtname,       wtopen,         wtclose,        wtread,
  307           wtwrite,      nulldev,        nulldev,        nomap,
  308           nodev,        nulldev,        nulldev,        0,
  309           nodev },
  310 #endif  NWT > 0
  311 
  312 #if     NPC586 > 0
  313         { pc586name,    pc586open,      nulldev,        nulldev,
  314           pc586output,  pc586getstat,   pc586setstat,   nomap,
  315           pc586setinput,nulldev,        nulldev,        0,
  316           nodev },
  317 #endif
  318 
  319 #if     NAT3C501 > 0
  320         { at3c501name,  at3c501open,    nulldev,        nulldev,
  321           at3c501output,at3c501getstat, at3c501setstat, nomap,
  322           at3c501setinput, nulldev,     nulldev,        0,
  323           nodev },
  324 #endif
  325 
  326 #if     NNS8390 > 0
  327         { ns8390wdname, wd8003open,     nulldev,        nulldev,
  328           ns8390output, ns8390getstat,  ns8390setstat,  nomap,
  329           ns8390setinput, nulldev,      nulldev,        0,
  330           nodev },
  331 
  332         { ns8390elname, eliiopen,       nulldev,        nulldev,
  333           ns8390output, ns8390getstat,  ns8390setstat,  nomap,
  334           ns8390setinput, nulldev,      nulldev,        0,
  335           nodev },
  336 #endif
  337 
  338 #if     NPAR > 0
  339         { parname,      paropen,        nulldev,        nulldev,
  340           paroutput,    pargetstat,     parsetstat,     nomap,
  341           parsetinput,  nulldev,        nulldev,        0,
  342           nodev },
  343 #endif
  344 
  345 #if     NDE6C > 0
  346         { de6cname,     de6copen,       nulldev,        nulldev,
  347           de6coutput,   de6cgetstat,    de6csetstat,    nomap,
  348           de6csetinput, nulldev,        nulldev,        0,
  349           nodev },
  350 #endif
  351 
  352 #if     NCOM > 0
  353         { comname,      comopen,        comclose,       comread,
  354           comwrite,     comgetstat,     comsetstat,     nomap,
  355           nodev,        nulldev,        comportdeath,   0,
  356           nodev },
  357 #endif
  358 
  359 #if     NLPR > 0
  360         { lprname,      lpropen,        lprclose,       lprread,
  361           lprwrite,     lprgetstat,     lprsetstat,     nomap,
  362           nodev,        nulldev,        lprportdeath,   0,
  363           nodev },
  364 #endif
  365 
  366 #if     NBLIT > 0
  367         { blitname,     blitopen,       blitclose,      nodev,
  368           nodev,        blit_get_stat,  nodev,          blitmmap,
  369           nodev,        nodev,          nodev,          0,
  370           nodev },
  371 #endif
  372 
  373         { mousename,    mouseopen,      mouseclose,     mouseread,
  374           nodev,        nulldev,        nulldev,        nomap,
  375           nodev,        nulldev,        nulldev,        0,
  376           nodev },
  377 
  378         { kbdname,      kbdopen,        kbdclose,       kbdread,
  379           nodev,        kbdgetstat,     kbdsetstat,     nomap,
  380           nodev,        nulldev,        nulldev,        0,
  381           nodev },
  382 
  383         { ioplname,     ioplopen,       ioplclose,      nodev,
  384           nodev,        nodev,          nodev,          ioplmmap,
  385           nodev,        nulldev,        nulldev,        0,
  386           nodev },
  387 
  388 #if     NMC > 0
  389         { mc_name,      mc_open,        mc_close,       nodev,
  390           nodev,        mc_getstat,     mc_setstat,     mc_mmap,
  391           nodev,        nulldev,        nulldev,        0,
  392           mc_devinfo },
  393 #endif
  394 
  395 #if     NCLOCKPIT > 0
  396         { clockpitname, clockpitopen,   clockpitclose,  nodev,
  397           nodev,        clockpitgetstat,clockpitsetstat,clockpitmmap,
  398           nodev,        nulldev,        nulldev,        0,
  399           clockpitinfo },
  400 #endif
  401 };
  402 int     dev_name_count = sizeof(dev_name_list)/sizeof(dev_name_list[0]);
  403 
  404 /*
  405  * Indirect list.
  406  */
  407 struct dev_indirect dev_indirect_list[] = {
  408 
  409         /* console */
  410         { "console",    &dev_name_list[0],      0 },
  411         { "clock_priv", 0,                      0 },
  412         { "clock",      0,                      0 }
  413 };
  414 int     dev_indirect_count = sizeof(dev_indirect_list)
  415                                 / sizeof(dev_indirect_list[0]);
  416 
  417 /*
  418  *      Operations vector for non-privileged clock operations
  419  *      on system clock.
  420  */
  421 struct dev_ops  clock_unpriv_ops =
  422         { "",           nodev,          nodev,          nodev,
  423           nodev,        nodev,          nodev,          nomap,
  424           nodev,        nodev,          nodev,          0,
  425           nodev };
  426 
  427 /*
  428  *      Set unprivileged clock device from clock device
  429  *      (system clock).
  430  */
  431 void set_clock_unpriv(void)
  432 {
  433         struct dev_ops  *ops;
  434         int             unit;
  435 
  436         /*
  437          *      Find the privileged clock vector
  438          */
  439         if (!dev_name_lookup("clock_priv", &ops, &unit))
  440             panic("no clock device");
  441 
  442         /*
  443          *      Copy the operations vector to the unprivileged ops
  444          *      vector.
  445          */
  446         clock_unpriv_ops = *ops;
  447         clock_unpriv_ops.d_setstat = nodev;     /* privileged op */
  448 
  449         /*
  450          *      Fill in the aliases.
  451          */
  452         dev_set_indirection("clock", &clock_unpriv_ops, 0);
  453 }

Cache object: d8e0800e53c804e2f34b24e75fc458f3


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