Annotation of kernel/bsd/dev/ppc/conf.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /*
                     26:  * Copyright (c) 1997 by Apple Computer, Inc., all rights reserved
                     27:  * Copyright (c) 1993 NeXT Computer, Inc.
                     28:  *
                     29:  * UNIX Device switch tables.
                     30:  *
                     31:  */
                     32: 
                     33: #import <sys/param.h>
                     34: #import <sys/systm.h>
                     35: #import <sys/buf.h>
                     36: #import <sys/ioctl.h>
                     37: #import <sys/tty.h>
                     38: #import <sys/conf.h>
                     39: 
                     40: 
                     41: extern int     nulldev();
                     42: 
                     43: __private_extern__ int sdopen(), sdclose(), sdread();
                     44: __private_extern__ int sdwrite(), sdioctl(), sdsize();
                     45: __private_extern__ void        sdstrategy();
                     46:                 
                     47: 
                     48: struct bdevsw  bdevsw[] =
                     49: {
                     50:        /*
                     51:         *      For block devices, every other block of 8 slots is 
                     52:         *      reserved to NeXT.  The other slots are available for
                     53:         *      the user.  This way we can both add new entries without
                     54:         *      running into each other.  Be sure to fill in NeXT's
                     55:         *      8 reserved slots when you jump over us -- we'll do the
                     56:         *      same for you.
                     57:         */
                     58: 
                     59:        /* 0 - 7 are reserved to NeXT */
                     60: 
                     61:        NO_BDEVICE,                                                     /* 0*/
                     62:        NO_BDEVICE,                                                     /* 1*/
                     63:        NO_BDEVICE,                                                     /* 2*/
                     64:        NO_BDEVICE,                                                     /* 3*/
                     65:        NO_BDEVICE,                                                     /* 4*/
                     66:        NO_BDEVICE,                                                     /* 5*/
                     67:        { sdopen,       sdclose,        sdstrategy,     sdioctl,        /* 6*/
                     68:          enodev,       sdsize,         D_DISK },
                     69:        NO_BDEVICE,                                                     /* 7*/
                     70: 
                     71:        /* 8 - 15 are reserved to the user */
                     72:        NO_BDEVICE,                                                     /* 8*/
                     73:        NO_BDEVICE,                                                     /* 9*/
                     74:        NO_BDEVICE,                                                     /*10*/
                     75:        NO_BDEVICE,                                                     /*11*/
                     76:        NO_BDEVICE,                                                     /*12*/
                     77:        NO_BDEVICE,                                                     /*13*/
                     78:        NO_BDEVICE,                                                     /*14*/
                     79:        NO_BDEVICE,                                                     /*15*/
                     80: 
                     81:        /* 16 - 23 are reserved to NeXT */
                     82:        NO_BDEVICE,                                                     /*16*/
                     83:        NO_BDEVICE,                                                     /*17*/
                     84:        NO_BDEVICE,                                                     /*18*/
                     85:        NO_BDEVICE,                                                     /*18*/
                     86:        NO_BDEVICE,                                                     /*20*/
                     87:        NO_BDEVICE,                                                     /*21*/
                     88:        NO_BDEVICE,                                                     /*22*/
                     89:        NO_BDEVICE,                                                     /*23*/
                     90: };
                     91: 
                     92: int    nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]);
                     93: 
                     94: extern struct tty *km_tty[];
                     95: extern int     cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(),
                     96:                cnselect(),cngetc(), cnputc(dev_t dev, char c);
                     97: extern int     kmopen(),kmclose(),kmread(),kmwrite(),kmioctl(),
                     98:                kmgetc(), kmputc(dev_t dev, char c);
                     99: extern int     sgopen(),sgclose(), sgioctl();
                    100: 
                    101: #define TEMPDISPLAY 1
                    102:  
                    103: #if   TEMPDISPLAY
                    104: extern int tdis_open(),tdis_close(),tdis_ioctl();
                    105: #endif
                    106: 
                    107: 
                    108: #import <vol.h>
                    109: #if NVOL > 0
                    110: extern int     volopen(),volclose(),volioctl();
                    111: #else
                    112: #define        volopen         eno_opcl
                    113: #define        volclose        eno_opcl
                    114: #define        volioctl        eno_ioctl
                    115: #endif
                    116: 
                    117: extern int     cttyopen(), cttyread(), cttywrite(), cttyioctl(), cttyselect();
                    118: 
                    119: extern int     mmread(),mmwrite();
                    120: #define        mmselect        seltrue
                    121: #define mmmmap         eno_mmap
                    122: 
                    123: #import <pty.h>
                    124: #if NPTY > 0
                    125: extern struct tty *pt_tty[];
                    126: extern int     ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(),ptsputc();
                    127: extern int     ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(),
                    128:                ptyioctl();
                    129: #else
                    130: #define ptsopen                eno_opcl
                    131: #define ptsclose       eno_opcl
                    132: #define ptsread                eno_rdwrt
                    133: #define ptswrite       eno_rdwrt
                    134: #define        ptsstop         nulldev
                    135: #define ptsputc                nulldev
                    136: 
                    137: #define ptcopen                eno_opcl
                    138: #define ptcclose       eno_opcl
                    139: #define ptcread                eno_rdwrt
                    140: #define ptcwrite       eno_rdwrt
                    141: #define        ptcselect       eno_select
                    142: #define ptyioctl       eno_ioctl
                    143: #endif
                    144: 
                    145: extern int     logopen(),logclose(),logread(),logioctl(),logselect();
                    146: extern int     nvopen(), nvclose(), nvread(), nvwrite();
                    147: extern int     fdesc_open(), fdesc_read(), fdesc_write(),
                    148:                fdesc_ioctl(), fdesc_select();
                    149: 
                    150: extern int     seltrue();
                    151: 
                    152: struct cdevsw  cdevsw[] =
                    153: {
                    154:        /*
                    155:         *      For character devices, every other block of 16 slots is
                    156:         *      reserved to NeXT.  The other slots are available for
                    157:         *      the user.  This way we can both add new entries without
                    158:         *      running into each other.  Be sure to fill in NeXT's
                    159:         *      16 reserved slots when you jump over us -- we'll do the
                    160:         *      same for you.
                    161:         */
                    162: 
                    163:        /* 0 - 15 are reserved to NeXT */
                    164: 
                    165:     {
                    166:        cnopen,         cnclose,        cnread,         cnwrite,        /* 0*/
                    167:        cnioctl,        nulldev,        nulldev,        0,              cnselect,
                    168:        eno_mmap,       eno_strat,      cngetc,         cnputc,         D_TTY
                    169:     },
                    170:     NO_CDEVICE,                                                                /* 1*/
                    171:     {
                    172:        cttyopen,       nulldev,        cttyread,       cttywrite,      /* 2*/
                    173:        cttyioctl,      nulldev,        nulldev,        0,              cttyselect,
                    174:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY
                    175:     },
                    176:     {
                    177:        nulldev,        nulldev,        mmread,         mmwrite,        /* 3*/
                    178:        eno_ioctl,      nulldev,        nulldev,        0,              mmselect,
                    179:        mmmmap,         eno_strat,      eno_getc,       eno_putc,       0
                    180:     },
                    181:     {
                    182:        ptsopen,        ptsclose,       ptsread,        ptswrite,       /* 4*/
                    183:        ptyioctl,       ptsstop,        nulldev,        pt_tty,         ttselect,
                    184:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY
                    185:     },
                    186:     {
                    187:        ptcopen,        ptcclose,       ptcread,        ptcwrite,       /* 5*/
                    188:        ptyioctl,       nulldev,        nulldev,        0,              ptcselect,
                    189:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TTY
                    190:     },
                    191:     {
                    192:        logopen,        logclose,       logread,        eno_rdwrt,      /* 6*/
                    193:        logioctl,       eno_stop,       nulldev,        0,              logselect,
                    194:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       0
                    195:     },
                    196:     NO_CDEVICE,                                                                /* 7*/
                    197:     NO_CDEVICE,                                                                /* 8*/
                    198:     NO_CDEVICE,                                                                /* 9*/
                    199:     NO_CDEVICE,                                                                /*10*/
                    200:     NO_CDEVICE,                                                                /*11*/
                    201:     {
                    202:        kmopen,         kmclose,        kmread,         kmwrite,        /*12*/
                    203:        kmioctl,        nulldev,        nulldev,        km_tty,         ttselect,
                    204:        eno_mmap,       eno_strat,      kmgetc,         kmputc,         0
                    205:     },
                    206:     NO_CDEVICE,                                                                /*13*/
                    207:     {
                    208:        sdopen,         sdclose,        sdread,         sdwrite,        /*14*/
                    209:        sdioctl,        eno_stop,       nulldev,        0,              eno_select,
                    210:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TAPE
                    211:     },
                    212:     NO_CDEVICE,                                                                /*15*/
                    213: 
                    214:        /* 16 - 31 are reserved to the user */
                    215:     NO_CDEVICE,                                                                /*16*/
                    216:     NO_CDEVICE,                                                                /*17*/
                    217:     NO_CDEVICE,                                                                /*18*/
                    218:     NO_CDEVICE,                                                                /*19*/
                    219:     NO_CDEVICE,                                                                /*20*/
                    220:     NO_CDEVICE,                                                                /*21*/
                    221:     NO_CDEVICE,                                                                /*22*/
                    222:     NO_CDEVICE,                                                                /*23*/
                    223:     NO_CDEVICE,                                                                /*24*/
                    224:     NO_CDEVICE,                                                                /*25*/
                    225:     NO_CDEVICE,                                                                /*26*/
                    226:     NO_CDEVICE,                                                                /*27*/
                    227:     NO_CDEVICE,                                                                /*28*/
                    228:     NO_CDEVICE,                                                                /*29*/
                    229:     NO_CDEVICE,                                                                /*30*/
                    230:     NO_CDEVICE,                                                                /*31*/
                    231: 
                    232:        /* 32 - 47 are reserved to NeXT */
                    233:     {
                    234:        fdesc_open,     eno_opcl,       fdesc_read,     fdesc_write,    /*32*/
                    235:        fdesc_ioctl,    eno_stop,       eno_reset,      0,              fdesc_select,
                    236:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       0
                    237:     },
                    238:     {
                    239:        sgopen,         sgclose,        eno_rdwrt,      eno_rdwrt,      /*33*/
                    240:        sgioctl,        eno_stop,       eno_reset,      0,              eno_select,
                    241:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       D_TAPE
                    242:     },
                    243:     NO_CDEVICE,                                                                /*34*/
                    244:     NO_CDEVICE,                                                                /*35*/
                    245:     NO_CDEVICE,                                                                /*36*/
                    246:     {
                    247:        nvopen,         nvclose,        nvread,         nvwrite,        /*37*/
                    248:        eno_ioctl,      nulldev,        nulldev,        0,              seltrue,
                    249:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       0
                    250:     },
                    251:     NO_CDEVICE,                                                                /*38*/
                    252:     NO_CDEVICE,                                                                /*39*/
                    253:     NO_CDEVICE,                                                                /*40*/
                    254:        /* 41 used to be for fd */
                    255:     NO_CDEVICE,                                                                /*41*/
                    256:     {
                    257:        volopen,        volclose,       eno_rdwrt,      eno_rdwrt,      /*42*/
                    258:        volioctl,       eno_stop,       eno_reset,      0,              seltrue,
                    259:        eno_mmap,       eno_strat,      eno_getc,       eno_putc,       0
                    260:     },
                    261: };
                    262: int    nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
                    263: 
                    264: 
                    265: #import        <sys/vnode.h> /* for VCHR and VBLK */
                    266: /*
                    267:  * return true if a disk
                    268:  */
                    269: int
                    270: isdisk(dev, type)
                    271:        dev_t dev;
                    272:        int type;
                    273: {
                    274:        switch (major(dev)) {
                    275:        case 1: /* fd: floppy */
                    276:        case 6: /* sd: scsi disk */
                    277:        case 3: /* ide:  */
                    278:                if (type == VBLK)
                    279:                        return(1);
                    280:                break;
                    281:        case 14:         /* sd: scsi disk */
                    282:        case 41: /* fd: floppy */
                    283:                if (type == VCHR)
                    284:                        return(1);
                    285:                break;
                    286:        }
                    287:        return(0);
                    288: }
                    289: 
                    290: static int chrtoblktab[] = {
                    291:        /* CHR*/        /* BLK*/        /* CHR*/        /* BLK*/
                    292:        /*  0 */        NODEV,          /*  1 */        NODEV,
                    293:        /*  2 */        NODEV,          /*  3 */        NODEV,
                    294:        /*  4 */        NODEV,          /*  5 */        NODEV,
                    295:        /*  6 */        NODEV,          /*  7 */        NODEV,
                    296:        /*  8 */        NODEV,          /*  9 */        NODEV,
                    297:        /* 10 */        NODEV,          /* 11 */        NODEV,
                    298:        /* 12 */        NODEV,          /* 13 */        NODEV,
                    299:        /* 14 */        6,              /* 15 */        NODEV,
                    300:        /* 16 */        NODEV,          /* 17 */        NODEV,
                    301:        /* 18 */        NODEV,          /* 19 */        NODEV,
                    302:        /* 20 */        NODEV,          /* 21 */        NODEV,
                    303:        /* 22 */        NODEV,          /* 23 */        NODEV,
                    304:        /* 24 */        NODEV,          /* 25 */        NODEV,
                    305:        /* 26 */        NODEV,          /* 27 */        NODEV,
                    306:        /* 28 */        NODEV,          /* 29 */        NODEV,
                    307:        /* 30 */        NODEV,          /* 31 */        NODEV,
                    308:        /* 32 */        NODEV,          /* 33 */        NODEV,
                    309:        /* 34 */        NODEV,          /* 35 */        NODEV,
                    310:        /* 36 */        NODEV,          /* 37 */        NODEV,
                    311:        /* 38 */        NODEV,          /* 39 */        NODEV,
                    312:        /* 40 */        NODEV,          /* 41 */        1,
                    313:        /* 42 */        NODEV,          /* 43 */        NODEV,
                    314:        /* 44 */        NODEV,
                    315: };
                    316: 
                    317: /*
                    318:  * convert chr dev to blk dev
                    319:  */
                    320: dev_t
                    321: chrtoblk(dev)
                    322:        dev_t dev;
                    323: {
                    324:        int blkmaj;
                    325: 
                    326:        if (major(dev) >= nchrdev)
                    327:                return(NODEV);
                    328:        blkmaj = chrtoblktab[major(dev)];
                    329:        if (blkmaj == NODEV)
                    330:                return(NODEV);
                    331:        return(makedev(blkmaj, minor(dev)));
                    332: }
                    333: 
                    334: /*
                    335:  * Returns true if dev is /dev/mem or /dev/kmem.
                    336:  */
                    337: int iskmemdev(dev)
                    338:        dev_t dev;
                    339: {
                    340: 
                    341:        return (major(dev) == 3 && minor(dev) < 2);
                    342: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.