]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/dev/i386/conf.c
xnu-792.25.20.tar.gz
[apple/xnu.git] / bsd / dev / i386 / conf.c
index 854d04873a141610f02b3e449fb2aeb753cf54a8..0e5ea99b40011ca585ebbe55c45a09750e320543 100644 (file)
@@ -3,22 +3,19 @@
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 1.1 (the
+ * "License").  You may not use this file except in compliance with the
+ * License.  Please obtain a copy of the License at
+ * http://www.apple.com/publicsource and read it before using this file.
  * 
- * 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.
- * 
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
  * 
  * @APPLE_LICENSE_HEADER_END@
  */
 
 #include <sys/param.h>
 #include <sys/systm.h>
-#include <sys/buf.h>
 #include <sys/ioctl.h>
 #include <sys/tty.h>
 #include <sys/conf.h>
 
-
-extern int     nulldev();
+/* 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);
 
 struct bdevsw  bdevsw[] =
 {
@@ -92,32 +91,62 @@ struct bdevsw       bdevsw[] =
 int    nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]);
 
 extern struct tty *km_tty[];
-extern int     cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(),
-               cnselect(),cngetc(), cnputc(dev_t dev, char c);
-extern int     kmopen(),kmclose(),kmread(),kmwrite(),kmioctl(),
-               kmgetc(), kmputc(dev_t dev, char c);
-extern int     sgopen(),sgclose(), sgioctl();
+extern d_open_t                cnopen;
+extern d_close_t       cnclose;
+extern d_read_t                cnread;
+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_getc_t                kmgetc;
+extern d_putc_t                kmputc;
+extern d_open_t                sgopen;
+extern d_close_t       sgclose;
+extern d_ioctl_t       sgioctl;
 
 #if NVOL > 0
-extern int     volopen(),volclose(),volioctl();
+extern d_open_t                volopen;
+extern d_close_t       volclose;
+extern d_ioctl_t       volioctl;
 #else
 #define        volopen         eno_opcl
 #define        volclose        eno_opcl
 #define        volioctl        eno_ioctl
 #endif
 
-extern int     cttyopen(), cttyread(), cttywrite(), cttyioctl(), cttyselect();
+extern d_open_t                cttyopen;
+extern d_read_t                cttyread;
+extern d_write_t       cttywrite;
+extern d_ioctl_t       cttyioctl;
+extern d_select_t      cttyselect;
 
-extern int     mmread(),mmwrite();
-#define        mmselect        seltrue
+extern d_read_t                mmread;
+extern d_write_t       mmwrite;
+extern d_ioctl_t       mmioctl;
+#define        mmselect        (select_fcn_t *)seltrue
 #define mmmmap         eno_mmap
 
 #include <pty.h>
 #if NPTY > 0
 extern struct tty *pt_tty[];
-extern int     ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(),ptsputc();
-extern int     ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(),
-               ptyioctl();
+extern d_open_t                ptsopen;
+extern d_close_t       ptsclose;
+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_write_t       ptcwrite;
+extern d_select_t      ptcselect;
+extern d_ioctl_t       ptyioctl;
 #else
 #define ptsopen                eno_opcl
 #define ptsclose       eno_opcl
@@ -134,11 +163,25 @@ extern int        ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(),
 #define ptyioctl       eno_ioctl
 #endif
 
-extern int     logopen(),logclose(),logread(),logioctl(),logselect();
-extern int     fdesc_open(), fdesc_read(), fdesc_write(),
-               fdesc_ioctl(), fdesc_select();
+extern d_open_t                logopen;
+extern d_close_t       logclose;
+extern d_read_t                logread;
+extern d_ioctl_t       logioctl;
+extern d_select_t      logselect;
+extern d_open_t                fdesc_open;
+extern d_read_t                fdesc_read;
+extern d_write_t       fdesc_write;
+extern d_ioctl_t       fdesc_ioctl;
+extern d_select_t      fdesc_select;
 
-extern int     seltrue();
+#define nullopen       (d_open_t *)&nulldev
+#define nullclose      (d_close_t *)&nulldev
+#define nullread       (d_read_t *)&nulldev
+#define nullwrite      (d_write_t *)&nulldev
+#define nullioctl      (d_ioctl_t *)&nulldev
+#define nullselect     (d_select_t *)&nulldev
+#define nullstop       (d_stop_t *)&nulldev
+#define nullreset      (d_reset_t *)&nulldev
 
 struct cdevsw  cdevsw[] =
 {
@@ -155,33 +198,33 @@ struct cdevsw     cdevsw[] =
 
     {
        cnopen,         cnclose,        cnread,         cnwrite,        /* 0*/
-       cnioctl,        nulldev,        nulldev,        0,              cnselect,
+       cnioctl,        nullstop,       nullreset,      0,              cnselect,
        eno_mmap,       eno_strat,      cngetc,         cnputc,         D_TTY
     },
     NO_CDEVICE,                                                                /* 1*/
     {
-       cttyopen,       nulldev,        cttyread,       cttywrite,      /* 2*/
-       cttyioctl,      nulldev,        nulldev,        0,              cttyselect,
+       cttyopen,       nullclose,      cttyread,       cttywrite,      /* 2*/
+       cttyioctl,      nullstop,       nullreset,      0,              cttyselect,
        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY
     },
     {
-       nulldev,        nulldev,        mmread,         mmwrite,        /* 3*/
-       eno_ioctl,      nulldev,        nulldev,        0,              mmselect,
-       mmmmap,         eno_strat,      eno_getc,       eno_putc,       0
+       nullopen,       nullclose,      mmread,         mmwrite,        /* 3*/
+       mmioctl,        nullstop,       nullreset,      0,              mmselect,
+       mmmmap,         eno_strat,      eno_getc,       eno_putc,       D_DISK
     },
     {
        ptsopen,        ptsclose,       ptsread,        ptswrite,       /* 4*/
-       ptyioctl,       ptsstop,        nulldev,        pt_tty,         ttselect,
+       ptyioctl,       ptsstop,        nullreset,      pt_tty,         ttselect,
        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY
     },
     {
        ptcopen,        ptcclose,       ptcread,        ptcwrite,       /* 5*/
-       ptyioctl,       nulldev,        nulldev,        0,              ptcselect,
+       ptyioctl,       nullstop,       nullreset,      0,              ptcselect,
        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY
     },
     {
        logopen,        logclose,       logread,        eno_rdwrt,      /* 6*/
-       logioctl,       eno_stop,       nulldev,        0,              logselect,
+       logioctl,       eno_stop,       nullreset,      0,              logselect,
        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       0
     },
     NO_CDEVICE,                                                                /* 7*/
@@ -191,7 +234,7 @@ struct cdevsw       cdevsw[] =
     NO_CDEVICE,                                                                /*11*/
     {
        kmopen,         kmclose,        kmread,         kmwrite,        /*12*/
-       kmioctl,        nulldev,        nulldev,        km_tty,         ttselect,
+       kmioctl,        nullstop,       nullreset,      km_tty,         ttselect,
        eno_mmap,       eno_strat,      kmgetc,         kmputc,         0
     },
     NO_CDEVICE,                                                                /*13*/
@@ -241,7 +284,7 @@ struct cdevsw       cdevsw[] =
     NO_CDEVICE,                                                                /*41*/
     {
        volopen,        volclose,       eno_rdwrt,      eno_rdwrt,      /*42*/
-       volioctl,       eno_stop,       eno_reset,      0,              seltrue,
+       volioctl,       eno_stop,       eno_reset,      0,              (select_fcn_t *)seltrue,
        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       0
     },
 };
@@ -253,9 +296,7 @@ int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
  * return true if a disk
  */
 int
-isdisk(dev, type)
-       dev_t dev;
-       int type;
+isdisk(dev_t dev, int type)
 {
        dev_t   maj = major(dev);
 
@@ -306,8 +347,7 @@ static int chrtoblktab[] = {
  * convert chr dev to blk dev
  */
 dev_t
-chrtoblk(dev)
-       dev_t dev;
+chrtoblk(dev_t dev)
 {
        int blkmaj;
 
@@ -333,9 +373,7 @@ chrtoblk_set(int cdev, int bdev)
 /*
  * Returns true if dev is /dev/mem or /dev/kmem.
  */
-int iskmemdev(dev)
-       dev_t dev;
+int iskmemdev(dev_t dev)
 {
-
        return (major(dev) == 3 && minor(dev) < 2);
 }