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