[BACK]Return to conf.c CVS log [TXT][DIR] Up to [local] / sys / arch / sparc / sparc

Annotation of sys/arch/sparc/sparc/conf.c, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: conf.c,v 1.46 2007/05/28 22:26:03 todd Exp $  */
        !             2: /*     $NetBSD: conf.c,v 1.40 1996/04/11 19:20:03 thorpej Exp $ */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1992, 1993
        !             6:  *     The Regents of the University of California.  All rights reserved.
        !             7:  *
        !             8:  * This software was developed by the Computer Systems Engineering group
        !             9:  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
        !            10:  * contributed to Berkeley.
        !            11:  *
        !            12:  * All advertising materials mentioning features or use of this software
        !            13:  * must display the following acknowledgement:
        !            14:  *     This product includes software developed by the University of
        !            15:  *     California, Lawrence Berkeley Laboratory.
        !            16:  *
        !            17:  * Redistribution and use in source and binary forms, with or without
        !            18:  * modification, are permitted provided that the following conditions
        !            19:  * are met:
        !            20:  * 1. Redistributions of source code must retain the above copyright
        !            21:  *    notice, this list of conditions and the following disclaimer.
        !            22:  * 2. Redistributions in binary form must reproduce the above copyright
        !            23:  *    notice, this list of conditions and the following disclaimer in the
        !            24:  *    documentation and/or other materials provided with the distribution.
        !            25:  * 3. Neither the name of the University nor the names of its contributors
        !            26:  *    may be used to endorse or promote products derived from this software
        !            27:  *    without specific prior written permission.
        !            28:  *
        !            29:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            30:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            31:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            32:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            33:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            34:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            35:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            36:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            37:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            38:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            39:  * SUCH DAMAGE.
        !            40:  *
        !            41:  *     @(#)conf.c      8.3 (Berkeley) 11/14/93
        !            42:  */
        !            43:
        !            44: #include <sys/param.h>
        !            45: #include <sys/systm.h>
        !            46: #include <sys/buf.h>
        !            47: #include <sys/ioctl.h>
        !            48: #include <sys/vnode.h>
        !            49: #include <sys/tty.h>
        !            50: #include <sys/conf.h>
        !            51:
        !            52: #include <machine/conf.h>
        !            53:
        !            54: #include "bio.h"
        !            55: #include "pty.h"
        !            56: #include "bpfilter.h"
        !            57: #include "tun.h"
        !            58: #include "audio.h"
        !            59: #include "vnd.h"
        !            60: #include "ccd.h"
        !            61: #include "raid.h"
        !            62: #include "ch.h"
        !            63: #include "ss.h"
        !            64: #include "uk.h"
        !            65: #include "sd.h"
        !            66: #include "st.h"
        !            67: #include "cd.h"
        !            68: #include "rd.h"
        !            69: #include "presto.h"
        !            70:
        !            71: #include "zstty.h"
        !            72:
        !            73: #include "fdc.h"               /* has NFDC and NFD; see files.sparc */
        !            74: #include "xd.h"
        !            75: #include "xy.h"
        !            76: #include "bpp.h"
        !            77: #include "magma.h"             /* has NMTTY and NMBPP */
        !            78: #include "spif.h"              /* has NSTTY and NSBPP */
        !            79: #include "scf.h"
        !            80: #include "flash.h"
        !            81: #include "fga.h"
        !            82: #include "daadio.h"
        !            83: #include "com.h"
        !            84:
        !            85: #include "wsdisplay.h"
        !            86: #include "wskbd.h"
        !            87: #include "wsmouse.h"
        !            88: #include "wsmux.h"
        !            89:
        !            90: #ifdef XFS
        !            91: #include <xfs/nxfs.h>
        !            92: cdev_decl(xfs_dev);
        !            93: #endif
        !            94: #include "ksyms.h"
        !            95:
        !            96: struct bdevsw  bdevsw[] =
        !            97: {
        !            98:        bdev_notdef(),                  /* 0 */
        !            99:        bdev_notdef(),                  /* 1 */
        !           100:        bdev_notdef(),                  /* 2 */
        !           101:        bdev_disk_init(NXY,xy),         /* 3: SMD disk */
        !           102:        bdev_swap_init(1,sw),           /* 4 swap pseudo-device */
        !           103:        bdev_notdef(),                  /* 5 */
        !           104:        bdev_notdef(),                  /* 6 */
        !           105:        bdev_disk_init(NSD,sd),         /* 7: SCSI disk */
        !           106:        bdev_disk_init(NVND,vnd),       /* 8: vnode disk driver */
        !           107:        bdev_disk_init(NCCD,ccd),       /* 9: concatenated disk driver */
        !           108:        bdev_disk_init(NXD,xd),         /* 10: SMD disk */
        !           109:        bdev_tape_init(NST,st),         /* 11: SCSI tape */
        !           110:        bdev_notdef(),                  /* 12 */
        !           111:        bdev_notdef(),                  /* 13 */
        !           112:        bdev_notdef(),                  /* 14 */
        !           113:        bdev_notdef(),                  /* 15 */
        !           114:        bdev_disk_init(NFD,fd),         /* 16: floppy disk */
        !           115:        bdev_disk_init(NRD,rd),         /* 17: ram disk driver */
        !           116:        bdev_disk_init(NCD,cd),         /* 18: SCSI CD-ROM */
        !           117:        bdev_lkm_dummy(),               /* 19 */
        !           118:        bdev_lkm_dummy(),               /* 20 */
        !           119:        bdev_lkm_dummy(),               /* 21 */
        !           120:        bdev_lkm_dummy(),               /* 22 */
        !           121:        bdev_lkm_dummy(),               /* 23 */
        !           122:        bdev_lkm_dummy(),               /* 24 */
        !           123:        bdev_disk_init(NRAID,raid),     /* 25: RAIDframe disk driver */
        !           124:        bdev_disk_init(NPRESTO,presto), /* 26: Prestoserve NVRAM */
        !           125: };
        !           126: int    nblkdev = sizeof(bdevsw) / sizeof(bdevsw[0]);
        !           127:
        !           128: #include "pf.h"
        !           129: #include "systrace.h"
        !           130: #include "tctrl.h"
        !           131:
        !           132: struct cdevsw  cdevsw[] =
        !           133: {
        !           134:        cdev_cn_init(1,cn),             /* 0: virtual console */
        !           135:        cdev_notdef(),                  /* 1 */
        !           136:        cdev_ctty_init(1,ctty),         /* 2: controlling terminal */
        !           137:        cdev_mm_init(1,mm),             /* 3: /dev/{null,mem,kmem,...} */
        !           138:        cdev_notdef(),                  /* 4 */
        !           139:        cdev_notdef(),                  /* 5 */
        !           140:        cdev_notdef(),                  /* 6 */
        !           141:        cdev_swap_init(1,sw),           /* 7: /dev/drum (swap pseudo-device) */
        !           142:        cdev_notdef(),                  /* 8 */
        !           143:        cdev_disk_init(NXY,xy),         /* 9: SMD disk */
        !           144:        cdev_notdef(),                  /* 10 */
        !           145:        cdev_notdef(),                  /* 11 */
        !           146:        cdev_tty_init(NZSTTY,zs),       /* 12: zs serial */
        !           147:        cdev_notdef(),                  /* 13: was /dev/mouse */
        !           148:        cdev_notdef(),                  /* 14 */
        !           149:        cdev_notdef(),                  /* 15: sun /dev/winNNN */
        !           150:        cdev_log_init(1,log),           /* 16: /dev/klog */
        !           151:        cdev_disk_init(NSD,sd),         /* 17: SCSI disk */
        !           152:        cdev_tape_init(NST,st),         /* 18: SCSI tape */
        !           153:        cdev_ch_init(NCH,ch),           /* 19: SCSI autochanger */
        !           154:        cdev_tty_init(NPTY,pts),        /* 20: pseudo-tty slave */
        !           155:        cdev_ptc_init(NPTY,ptc),        /* 21: pseudo-tty master */
        !           156:        cdev_notdef(),                  /* 22: was /dev/fb */
        !           157:        cdev_disk_init(NCCD,ccd),       /* 23: concatenated disk driver */
        !           158:        cdev_fd_init(1,filedesc),       /* 24: file descriptor pseudo-device */
        !           159:        cdev_disk_init(NPRESTO,presto), /* 25: Prestoserve NVRAM */
        !           160:        cdev_notdef(),                  /* 26 */
        !           161:        cdev_notdef(),                  /* 27: was /dev/bwtwo */
        !           162:        cdev_notdef(),                  /* 28 */
        !           163:        cdev_notdef(),                  /* 29: was /dev/kbd */
        !           164:        cdev_apm_init(NTCTRL,apm),      /* 30: tctrl APM interface */
        !           165:        cdev_notdef(),                  /* 31: was /dev/cgtwo */
        !           166:        cdev_notdef(),                  /* 32: should be /dev/gpone */
        !           167:        cdev_notdef(),                  /* 33 */
        !           168:        cdev_notdef(),                  /* 34 */
        !           169:        cdev_notdef(),                  /* 35 */
        !           170:        cdev_tty_init(NCOM,com),        /* 36: SPARCbook modem */
        !           171:        cdev_notdef(),                  /* 37 */
        !           172:        cdev_notdef(),                  /* 38 */
        !           173:        cdev_notdef(),                  /* 39: was /dev/cgfour */
        !           174:        cdev_notdef(),                  /* 40 */
        !           175:        cdev_notdef(),                  /* 41 */
        !           176:        cdev_disk_init(NXD,xd),         /* 42: SMD disk */
        !           177:        cdev_svr4_net_init(NSVR4_NET,svr4_net), /* 43: svr4 net pseudo-device */
        !           178:        cdev_notdef(),                  /* 44 */
        !           179:        cdev_notdef(),                  /* 45 */
        !           180:        cdev_notdef(),                  /* 46 */
        !           181:        cdev_notdef(),                  /* 47 */
        !           182:        cdev_notdef(),                  /* 48 */
        !           183:        cdev_notdef(),                  /* 49 */
        !           184:        cdev_systrace_init(NSYSTRACE,systrace), /* 50 system call tracing */
        !           185: #ifdef XFS
        !           186:        cdev_xfs_init(NXFS,xfs_dev),    /* 51: xfs communication device */
        !           187: #else
        !           188:        cdev_notdef(),                  /* 51 */
        !           189: #endif
        !           190:        cdev_notdef(),                  /* 52 */
        !           191:        cdev_notdef(),                  /* 53 */
        !           192:        cdev_disk_init(NFD,fd),         /* 54: floppy disk */
        !           193:        cdev_notdef(),                  /* 55: was /dev/cgthree */
        !           194:        cdev_notdef(),                  /* 56 */
        !           195:        cdev_notdef(),                  /* 57 */
        !           196:        cdev_disk_init(NCD,cd),         /* 58: SCSI CD-ROM */
        !           197:        cdev_pf_init(NPF,pf),           /* 59: packet filter */
        !           198:        cdev_notdef(),                  /* 60 */
        !           199:        cdev_notdef(),                  /* 61 */
        !           200:        cdev_notdef(),                  /* 62 */
        !           201:        cdev_notdef(),                  /* 63 */
        !           202:        cdev_notdef(),                  /* 64: was /dev/cgeight */
        !           203:        cdev_notdef(),                  /* 65 */
        !           204:        cdev_notdef(),                  /* 66 */
        !           205:        cdev_notdef(),                  /* 67: was /dev/cgsix */
        !           206:        cdev_notdef(),                  /* 68 */
        !           207:        cdev_gen_init(NAUDIO,audio),    /* 69: /dev/audio */
        !           208: #if defined(SUN4) || defined(SUN4C) || defined(SUN4M)
        !           209:        cdev_openprom_init(1,openprom), /* 70: /dev/openprom */
        !           210: #else
        !           211:        cdev_notdef(),                  /* 70 */
        !           212: #endif
        !           213:        cdev_notdef(),                  /* 71 */
        !           214:        cdev_notdef(),                  /* 72 */
        !           215:        cdev_notdef(),                  /* 73 */
        !           216:        cdev_notdef(),                  /* 74 */
        !           217:        cdev_notdef(),                  /* 75 */
        !           218:        cdev_notdef(),                  /* 76 */
        !           219:        cdev_notdef(),                  /* 77 */
        !           220:        cdev_wsdisplay_init(NWSDISPLAY, /* 78: frame buffers, etc. */
        !           221:            wsdisplay),
        !           222:        cdev_mouse_init(NWSKBD, wskbd), /* 79: keyboards */
        !           223:        cdev_mouse_init(NWSMOUSE, wsmouse), /* 80: mice */
        !           224:        cdev_mouse_init(NWSMUX, wsmux), /* 81: ws multiplexer */
        !           225:        cdev_notdef(),                  /* 82 */
        !           226:        cdev_notdef(),                  /* 83 */
        !           227:        cdev_notdef(),                  /* 84 */
        !           228:        cdev_notdef(),                  /* 85 */
        !           229:        cdev_notdef(),                  /* 86 */
        !           230:        cdev_notdef(),                  /* 87 */
        !           231:        cdev_notdef(),                  /* 88 */
        !           232:        cdev_notdef(),                  /* 89 */
        !           233:        cdev_notdef(),                  /* 90 */
        !           234:        cdev_notdef(),                  /* 91 */
        !           235:        cdev_notdef(),                  /* 92 */
        !           236:        cdev_notdef(),                  /* 93 */
        !           237:        cdev_notdef(),                  /* 94 */
        !           238:        cdev_notdef(),                  /* 95 */
        !           239:        cdev_notdef(),                  /* 96 */
        !           240:        cdev_daadio_init(NDAADIO,daadio), /* 97: daadio */
        !           241:        cdev_fga_init(NFGA,fga),        /* 98: fga */
        !           242:        cdev_notdef(),                  /* 99: was /dev/cgfourteen */
        !           243:        cdev_tty_init(NMTTY,mtty),      /* 100: magma */
        !           244:        cdev_gen_init(NMBPP,mbpp),      /* 101: magma */
        !           245:        cdev_tty_init(NSTTY,stty),      /* 102: spif */
        !           246:        cdev_gen_init(NSBPP,sbpp),      /* 103: spif */
        !           247:        cdev_bpp_init(NBPP,bpp),        /* 104: bpp */
        !           248:        cdev_bpftun_init(NBPFILTER,bpf),/* 105: packet filter */
        !           249:        cdev_disk_init(NRD,rd),         /* 106: ram disk driver */
        !           250:        cdev_scf_init(NSCF,scf),        /* 107: sysconfig regs */
        !           251:        cdev_flash_init(NFLASH,flash),  /* 108: flash memory */
        !           252:        cdev_notdef(),                  /* 109: was /dev/tcx */
        !           253:        cdev_disk_init(NVND,vnd),       /* 110: vnode disk driver */
        !           254:        cdev_bpftun_init(NTUN,tun),     /* 111: network tunnel */
        !           255:        cdev_lkm_init(NLKM,lkm),        /* 112: loadable module driver */
        !           256:        cdev_lkm_dummy(),               /* 113 */
        !           257:        cdev_lkm_dummy(),               /* 114 */
        !           258:        cdev_lkm_dummy(),               /* 115 */
        !           259:        cdev_lkm_dummy(),               /* 116 */
        !           260:        cdev_lkm_dummy(),               /* 117 */
        !           261:        cdev_lkm_dummy(),               /* 118 */
        !           262:        cdev_random_init(1,random),     /* 119: random generator */
        !           263:        cdev_uk_init(NUK,uk),           /* 120: unknown SCSI */
        !           264:        cdev_ss_init(NSS,ss),           /* 121: SCSI scanner */
        !           265:        cdev_ksyms_init(NKSYMS,ksyms),  /* 122: Kernel symbols device */
        !           266:        cdev_disk_init(NRAID,raid),     /* 123: RAIDframe disk driver */
        !           267:        cdev_bio_init(NBIO,bio),        /* 124: ioctl tunnel */
        !           268:        cdev_ptm_init(NPTY,ptm),        /* 125: pseudo-tty ptm device */
        !           269: };
        !           270: int    nchrdev = sizeof(cdevsw) / sizeof(cdevsw[0]);
        !           271:
        !           272: int    mem_no = 3;     /* major device number of memory special file */
        !           273:
        !           274: /*
        !           275:  * Swapdev is a fake device implemented
        !           276:  * in sw.c used only internally to get to swstrategy.
        !           277:  * It cannot be provided to the users, because the
        !           278:  * swstrategy routine munches the b_dev and b_blkno entries
        !           279:  * before calling the appropriate driver.  This would horribly
        !           280:  * confuse, e.g. the hashing routines. Instead, /dev/drum is
        !           281:  * provided as a character (raw) device.
        !           282:  */
        !           283: dev_t  swapdev = makedev(4, 0);
        !           284:
        !           285: /*
        !           286:  * Routine that identifies /dev/mem and /dev/kmem.
        !           287:  *
        !           288:  * A minimal stub routine can always return 0.
        !           289:  */
        !           290: int
        !           291: iskmemdev(dev)
        !           292:        dev_t dev;
        !           293: {
        !           294:
        !           295:        return (major(dev) == mem_no && minor(dev) < 2);
        !           296: }
        !           297:
        !           298: int
        !           299: iszerodev(dev)
        !           300:        dev_t dev;
        !           301: {
        !           302:        return (major(dev) == mem_no && minor(dev) == 12);
        !           303: }
        !           304:
        !           305: dev_t
        !           306: getnulldev()
        !           307: {
        !           308:        return makedev(mem_no, 2);
        !           309: }
        !           310:
        !           311: int chrtoblktbl[] = {
        !           312:        /* XXXX This needs to be dynamic for LKMs. */
        !           313:        /*VCHR*/        /*VBLK*/
        !           314:        /*  0 */        NODEV,
        !           315:        /*  1 */        NODEV,
        !           316:        /*  2 */        NODEV,
        !           317:        /*  3 */        NODEV,
        !           318:        /*  4 */        NODEV,
        !           319:        /*  5 */        NODEV,
        !           320:        /*  6 */        NODEV,
        !           321:        /*  7 */        NODEV,
        !           322:        /*  8 */        NODEV,
        !           323:        /*  9 */        3,
        !           324:        /* 10 */        NODEV,
        !           325:        /* 11 */        NODEV,
        !           326:        /* 12 */        NODEV,
        !           327:        /* 13 */        NODEV,
        !           328:        /* 14 */        NODEV,
        !           329:        /* 15 */        NODEV,
        !           330:        /* 16 */        NODEV,
        !           331:        /* 17 */        7,
        !           332:        /* 18 */        11,
        !           333:        /* 19 */        NODEV,
        !           334:        /* 20 */        NODEV,
        !           335:        /* 21 */        NODEV,
        !           336:        /* 22 */        NODEV,
        !           337:        /* 23 */        9,
        !           338:        /* 24 */        NODEV,
        !           339:        /* 25 */        26,
        !           340:        /* 26 */        NODEV,
        !           341:        /* 27 */        NODEV,
        !           342:        /* 28 */        NODEV,
        !           343:        /* 29 */        NODEV,
        !           344:        /* 30 */        NODEV,
        !           345:        /* 31 */        NODEV,
        !           346:        /* 32 */        NODEV,
        !           347:        /* 33 */        NODEV,
        !           348:        /* 34 */        NODEV,
        !           349:        /* 35 */        NODEV,
        !           350:        /* 36 */        NODEV,
        !           351:        /* 37 */        NODEV,
        !           352:        /* 38 */        NODEV,
        !           353:        /* 39 */        NODEV,
        !           354:        /* 40 */        NODEV,
        !           355:        /* 41 */        NODEV,
        !           356:        /* 42 */        10,
        !           357:        /* 43 */        NODEV,
        !           358:        /* 44 */        NODEV,
        !           359:        /* 45 */        NODEV,
        !           360:        /* 46 */        NODEV,
        !           361:        /* 47 */        NODEV,
        !           362:        /* 48 */        NODEV,
        !           363:        /* 49 */        NODEV,
        !           364:        /* 50 */        NODEV,
        !           365:        /* 51 */        NODEV,
        !           366:        /* 52 */        NODEV,
        !           367:        /* 53 */        NODEV,
        !           368:        /* 54 */        16,
        !           369:        /* 55 */        NODEV,
        !           370:        /* 56 */        NODEV,
        !           371:        /* 57 */        NODEV,
        !           372:        /* 58 */        18,
        !           373:        /* 59 */        NODEV,
        !           374:        /* 60 */        NODEV,
        !           375:        /* 61 */        NODEV,
        !           376:        /* 62 */        NODEV,
        !           377:        /* 63 */        NODEV,
        !           378:        /* 64 */        NODEV,
        !           379:        /* 65 */        NODEV,
        !           380:        /* 66 */        NODEV,
        !           381:        /* 67 */        NODEV,
        !           382:        /* 68 */        NODEV,
        !           383:        /* 69 */        NODEV,
        !           384:        /* 70 */        NODEV,
        !           385:        /* 71 */        NODEV,
        !           386:        /* 72 */        NODEV,
        !           387:        /* 73 */        NODEV,
        !           388:        /* 74 */        NODEV,
        !           389:        /* 75 */        NODEV,
        !           390:        /* 76 */        NODEV,
        !           391:        /* 77 */        NODEV,
        !           392:        /* 78 */        NODEV,
        !           393:        /* 79 */        NODEV,
        !           394:        /* 80 */        NODEV,
        !           395:        /* 81 */        NODEV,
        !           396:        /* 82 */        NODEV,
        !           397:        /* 83 */        NODEV,
        !           398:        /* 84 */        NODEV,
        !           399:        /* 85 */        NODEV,
        !           400:        /* 86 */        NODEV,
        !           401:        /* 87 */        NODEV,
        !           402:        /* 88 */        NODEV,
        !           403:        /* 89 */        NODEV,
        !           404:        /* 90 */        NODEV,
        !           405:        /* 91 */        NODEV,
        !           406:        /* 92 */        NODEV,
        !           407:        /* 93 */        NODEV,
        !           408:        /* 94 */        NODEV,
        !           409:        /* 95 */        NODEV,
        !           410:        /* 96 */        NODEV,
        !           411:        /* 97 */        NODEV,
        !           412:        /* 98 */        NODEV,
        !           413:        /* 99 */        NODEV,
        !           414:        /*100 */        NODEV,
        !           415:        /*101 */        NODEV,
        !           416:        /*102 */        NODEV,
        !           417:        /*103 */        NODEV,
        !           418:        /*104 */        NODEV,
        !           419:        /*105 */        NODEV,
        !           420:        /*106 */        17,
        !           421:        /*107 */        NODEV,
        !           422:        /*108 */        NODEV,
        !           423:        /*109 */        NODEV,
        !           424:        /*110 */        8,
        !           425:        /*111 */        NODEV,
        !           426:        /*112 */        NODEV,
        !           427:        /*113 */        NODEV,
        !           428:        /*114 */        NODEV,
        !           429:        /*115 */        NODEV,
        !           430:        /*116 */        NODEV,
        !           431:        /*117 */        NODEV,
        !           432:        /*118 */        NODEV,
        !           433:        /*119 */        NODEV,
        !           434:        /*120 */        NODEV,
        !           435:        /*121 */        NODEV,
        !           436:        /*122 */        NODEV,
        !           437:        /*123 */        25,
        !           438: };
        !           439: int nchrtoblktbl = sizeof(chrtoblktbl) / sizeof(chrtoblktbl[0]);

CVSweb