]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/dev/i386/conf.c
xnu-2050.24.15.tar.gz
[apple/xnu.git] / bsd / dev / i386 / conf.c
index b8912061874f07c0ca896002f0bc3544ff4cd560..bff6f72322b7a8dc0bfe655fecaf217a08467346 100644 (file)
@@ -1,14 +1,19 @@
 /*
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1997-2012 Apple Computer, Inc. All rights reserved.
  *
  *
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ * 
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
  * 
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * 
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
  * Please see the License for the specific language governing rights and
  * limitations under the License.
  * 
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 /*
  */
 /*
- * Copyright (c) 1997 by Apple Computer, Inc., all rights reserved
  * Copyright (c) 1993 NeXT Computer, Inc.
  *
  * UNIX Device switch tables.
  * Copyright (c) 1993 NeXT Computer, Inc.
  *
  * UNIX Device switch tables.
@@ -41,7 +45,6 @@
 #include <sys/conf.h>
 
 /* Prototypes that should be elsewhere: */
 #include <sys/conf.h>
 
 /* Prototypes that should be elsewhere: */
-extern int     isdisk(dev_t dev, int type);
 extern dev_t   chrtoblk(dev_t dev);
 extern int     chrtoblk_set(int cdev, int bdev);
 extern int     iskmemdev(dev_t dev);
 extern dev_t   chrtoblk(dev_t dev);
 extern int     chrtoblk_set(int cdev, int bdev);
 extern int     iskmemdev(dev_t dev);
@@ -50,14 +53,14 @@ struct bdevsw       bdevsw[] =
 {
        /*
         *      For block devices, every other block of 8 slots is 
 {
        /*
         *      For block devices, every other block of 8 slots is 
-        *      reserved to NeXT.  The other slots are available for
+        *      reserved for Apple.  The other slots are available for
         *      the user.  This way we can both add new entries without
         *      the user.  This way we can both add new entries without
-        *      running into each other.  Be sure to fill in NeXT's
+        *      running into each other.  Be sure to fill in Apple's
         *      8 reserved slots when you jump over us -- we'll do the
         *      same for you.
         */
 
         *      8 reserved slots when you jump over us -- we'll do the
         *      same for you.
         */
 
-       /* 0 - 7 are reserved to NeXT */
+       /* 0 - 7 are reserved for Apple */
 
        NO_BDEVICE,                                                     /* 0*/
        NO_BDEVICE,                                                     /* 1*/
 
        NO_BDEVICE,                                                     /* 0*/
        NO_BDEVICE,                                                     /* 1*/
@@ -78,7 +81,7 @@ struct bdevsw bdevsw[] =
        NO_BDEVICE,                                                     /*14*/
        NO_BDEVICE,                                                     /*15*/
 
        NO_BDEVICE,                                                     /*14*/
        NO_BDEVICE,                                                     /*15*/
 
-       /* 16 - 23 are reserved to NeXT */
+       /* 16 - 23 are reserved for Apple */
        NO_BDEVICE,                                                     /*16*/
        NO_BDEVICE,                                                     /*17*/
        NO_BDEVICE,                                                     /*18*/
        NO_BDEVICE,                                                     /*16*/
        NO_BDEVICE,                                                     /*17*/
        NO_BDEVICE,                                                     /*18*/
@@ -98,15 +101,11 @@ extern d_read_t            cnread;
 extern d_write_t       cnwrite;
 extern d_ioctl_t       cnioctl;
 extern d_select_t      cnselect;
 extern d_write_t       cnwrite;
 extern d_ioctl_t       cnioctl;
 extern d_select_t      cnselect;
-extern d_getc_t                cngetc;
-extern d_putc_t                cnputc;
 extern d_open_t                kmopen;
 extern d_close_t       kmclose;
 extern d_read_t                kmread;
 extern d_write_t       kmwrite;
 extern d_ioctl_t       kmioctl;
 extern d_open_t                kmopen;
 extern d_close_t       kmclose;
 extern d_read_t                kmread;
 extern d_write_t       kmwrite;
 extern d_ioctl_t       kmioctl;
-extern d_getc_t                kmgetc;
-extern d_putc_t                kmputc;
 extern d_open_t                sgopen;
 extern d_close_t       sgclose;
 extern d_ioctl_t       sgioctl;
 extern d_open_t                sgopen;
 extern d_close_t       sgclose;
 extern d_ioctl_t       sgioctl;
@@ -122,6 +121,7 @@ extern d_ioctl_t    volioctl;
 #endif
 
 extern d_open_t                cttyopen;
 #endif
 
 extern d_open_t                cttyopen;
+extern d_close_t       cttyclose;
 extern d_read_t                cttyread;
 extern d_write_t       cttywrite;
 extern d_ioctl_t       cttyioctl;
 extern d_read_t                cttyread;
 extern d_write_t       cttywrite;
 extern d_ioctl_t       cttyioctl;
@@ -141,7 +141,6 @@ extern d_close_t    ptsclose;
 extern d_read_t                ptsread;
 extern d_write_t       ptswrite;
 extern d_stop_t                ptsstop;
 extern d_read_t                ptsread;
 extern d_write_t       ptswrite;
 extern d_stop_t                ptsstop;
-extern d_putc_t                ptsputc;
 extern d_open_t                ptcopen;
 extern d_close_t       ptcclose;
 extern d_read_t                ptcread;
 extern d_open_t                ptcopen;
 extern d_close_t       ptcclose;
 extern d_read_t                ptcread;
@@ -154,7 +153,6 @@ extern d_ioctl_t    ptyioctl;
 #define ptsread                eno_rdwrt
 #define ptswrite       eno_rdwrt
 #define        ptsstop         nulldev
 #define ptsread                eno_rdwrt
 #define ptswrite       eno_rdwrt
 #define        ptsstop         nulldev
-#define ptsputc                nulldev
 
 #define ptcopen                eno_opcl
 #define ptcclose       eno_opcl
 
 #define ptcopen                eno_opcl
 #define ptcclose       eno_opcl
@@ -188,25 +186,25 @@ struct cdevsw     cdevsw[] =
 {
        /*
         *      For character devices, every other block of 16 slots is
 {
        /*
         *      For character devices, every other block of 16 slots is
-        *      reserved to NeXT.  The other slots are available for
+        *      reserved for Apple.  The other slots are available for
         *      the user.  This way we can both add new entries without
         *      the user.  This way we can both add new entries without
-        *      running into each other.  Be sure to fill in NeXT's
+        *      running into each other.  Be sure to fill in Apple's
         *      16 reserved slots when you jump over us -- we'll do the
         *      same for you.
         */
 
         *      16 reserved slots when you jump over us -- we'll do the
         *      same for you.
         */
 
-       /* 0 - 15 are reserved to NeXT */
+       /* 0 - 15 are reserved for Apple */
 
     {
        cnopen,         cnclose,        cnread,         cnwrite,        /* 0*/
        cnioctl,        nullstop,       nullreset,      0,              cnselect,
 
     {
        cnopen,         cnclose,        cnread,         cnwrite,        /* 0*/
        cnioctl,        nullstop,       nullreset,      0,              cnselect,
-       eno_mmap,       eno_strat,      cngetc,         cnputc,         D_TTY
+       eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY
     },
     NO_CDEVICE,                                                                /* 1*/
     {
     },
     NO_CDEVICE,                                                                /* 1*/
     {
-       cttyopen,       nullclose,      cttyread,       cttywrite,      /* 2*/
+       cttyopen,       cttyclose,      cttyread,       cttywrite,      /* 2*/
        cttyioctl,      nullstop,       nullreset,      0,              cttyselect,
        cttyioctl,      nullstop,       nullreset,      0,              cttyselect,
-       eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY
+       eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY | D_TRACKCLOSE
     },
     {
        nullopen,       nullclose,      mmread,         mmwrite,        /* 3*/
     },
     {
        nullopen,       nullclose,      mmread,         mmwrite,        /* 3*/
@@ -236,7 +234,7 @@ struct cdevsw       cdevsw[] =
     {
        kmopen,         kmclose,        kmread,         kmwrite,        /*12*/
        kmioctl,        nullstop,       nullreset,      km_tty,         ttselect,
     {
        kmopen,         kmclose,        kmread,         kmwrite,        /*12*/
        kmioctl,        nullstop,       nullreset,      km_tty,         ttselect,
-       eno_mmap,       eno_strat,      kmgetc,         kmputc,         0
+       eno_mmap,       eno_strat,      eno_getc,       eno_putc,       0
     },
     NO_CDEVICE,                                                                /*13*/
     NO_CDEVICE,                                                                /*14*/
     },
     NO_CDEVICE,                                                                /*13*/
     NO_CDEVICE,                                                                /*14*/
@@ -291,6 +289,7 @@ struct cdevsw       cdevsw[] =
 };
 int    nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
 
 };
 int    nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
 
+uint64_t cdevsw_flags[sizeof (cdevsw) / sizeof (cdevsw[0])];
 
 #include       <sys/vnode.h> /* for VCHR and VBLK */
 /*
 
 #include       <sys/vnode.h> /* for VCHR and VBLK */
 /*
@@ -309,7 +308,7 @@ isdisk(dev_t dev, int type)
                }
                /* FALL THROUGH */
        case VBLK:
                }
                /* FALL THROUGH */
        case VBLK:
-               if (bdevsw[maj].d_type == D_DISK) {
+               if ((D_TYPEMASK & bdevsw[maj].d_type) == D_DISK) {
                        return (1);
                }
                break;
                        return (1);
                }
                break;
@@ -326,7 +325,7 @@ static int chrtoblktab[] = {
        /*  8 */        NODEV,          /*  9 */        NODEV,
        /* 10 */        NODEV,          /* 11 */        NODEV,
        /* 12 */        NODEV,          /* 13 */        NODEV,
        /*  8 */        NODEV,          /*  9 */        NODEV,
        /* 10 */        NODEV,          /* 11 */        NODEV,
        /* 12 */        NODEV,          /* 13 */        NODEV,
-       /* 14 */        6,              /* 15 */        NODEV,
+       /* 14 */        NODEV,          /* 15 */        NODEV,
        /* 16 */        NODEV,          /* 17 */        NODEV,
        /* 18 */        NODEV,          /* 19 */        NODEV,
        /* 20 */        NODEV,          /* 21 */        NODEV,
        /* 16 */        NODEV,          /* 17 */        NODEV,
        /* 18 */        NODEV,          /* 19 */        NODEV,
        /* 20 */        NODEV,          /* 21 */        NODEV,
@@ -339,7 +338,7 @@ static int chrtoblktab[] = {
        /* 34 */        NODEV,          /* 35 */        NODEV,
        /* 36 */        NODEV,          /* 37 */        NODEV,
        /* 38 */        NODEV,          /* 39 */        NODEV,
        /* 34 */        NODEV,          /* 35 */        NODEV,
        /* 36 */        NODEV,          /* 37 */        NODEV,
        /* 38 */        NODEV,          /* 39 */        NODEV,
-       /* 40 */        NODEV,          /* 41 */        1,
+       /* 40 */        NODEV,          /* 41 */        NODEV,
        /* 42 */        NODEV,          /* 43 */        NODEV,
        /* 44 */        NODEV,
 };
        /* 42 */        NODEV,          /* 43 */        NODEV,
        /* 44 */        NODEV,
 };