MAKEDEV.tmpl revision 1.91
1#!/bin/sh - 2# $NetBSD: MAKEDEV.tmpl,v 1.91 2007/11/20 18:58:46 pooka Exp $ 3# 4# Copyright (c) 2003,2007 The NetBSD Foundation, Inc. 5# All rights reserved. 6# 7# Redistribution and use in source and binary forms, with or without 8# modification, are permitted provided that the following conditions 9# are met: 10# 1. Redistributions of source code must retain the above copyright 11# notice, this list of conditions and the following disclaimer. 12# 2. Redistributions in binary form must reproduce the above copyright 13# notice, this list of conditions and the following disclaimer in the 14# documentation and/or other materials provided with the distribution. 15# 3. All advertising materials mentioning features or use of this software 16# must display the following acknowledgement: 17# This product includes software developed by the NetBSD 18# Foundation, Inc. and its contributors. 19# 4. Neither the name of The NetBSD Foundation nor the names of its 20# contributors may be used to endorse or promote products derived 21# from this software without specific prior written permission. 22# 23# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 24# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 25# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 26# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 27# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 28# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 29# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 30# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 31# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 32# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33# POSSIBILITY OF SUCH DAMAGE. 34# 35# 36########################################################################### 37# 38# PLEASE RUN "cd ../share/man/man8 ; make makedevs" 39# AFTER CHANGING THIS FILE, AND COMMIT THE UPDATED MANPAGE! 40# 41########################################################################### 42# 43# Device "make" file. Valid special arguments: 44# all makes all known devices, including local devices. 45# Tries to make the 'standard' number of each type. 46# init A set of devices that is used for MFS /dev by init. 47# May be equal to "all". 48# floppy devices to be put on install floppies 49# ramdisk devices to be put into INSTALL kernel ramdisks. 50# std standard devices 51# local configuration specific devices 52# wscons make wscons devices 53# usbs make USB devices 54# isdns make ISDN devices 55# 56# Tapes: 57# st* SCSI tapes 58# wt* QIC-interfaced (e.g. not SCSI) 3M cartridge tape 59# ht* MASSBUS TM03 and TU?? 60# mt* MSCP tapes (e.g. TU81, TK50) 61# tm* UNIBUS TM11 and TE10 emulations (e.g. Emulex TC-11) 62# ts* UNIBUS TS11 63# ut* UNIBUS TU45 emulations (e.g. si 9700) 64# uu* TU58 cassettes on DL11 controller 65# 66# Disks: 67# ccd* concatenated disk devices 68# cd* SCSI or ATAPI CD-ROM 69# cgd* cryptographic disk devices 70# raid* RAIDframe disk devices 71# sd* SCSI disks 72# wd* "winchester" disk drives (ST506,IDE,ESDI,RLL,...) 73# bmd* Nereid bank memory disks 74# ed* IBM PS/2 ESDI disk devices 75# fd* "floppy" disk drives (3 1/2", 5 1/4") 76# fss* Files system snapshot devices 77# gdrom* Dreamcast "gigadisc" CD-ROM drive 78# hk* UNIBUS RK06 and RK07 79# hp* MASSBUS RM?? 80# ld* Logical disk devices (e.g., hardware RAID) 81# mcd* Mitsumi CD-ROM 82# md* memory pseudo-disk devices 83# ofdisk* OpenFirmware disk devices 84# ra* MSCP disks (RA??, RD??) 85# rb* 730 IDC w/ RB80 and/or RB02 86# rd* HDC9224 RD disks on VS2000 87# rl* UNIBUS RL02 88# rx* MSCP floppy disk (RX33/50/...) 89# up* other UNIBUS devices (e.g. on Emulex SC-21V controller) 90# vnd* "file" pseudo-disks 91# xbd* Xen virtual disks 92# xd* Xylogic 753/7053 disks 93# xy* Xylogic 450/451 disks 94# 95# Pointing devices: 96# wsmouse* wscons mouse events 97# lms* Logitech bus mouse 98# mms* Microsoft bus mouse 99# qms* "quadrature mouse" 100# pms* PS/2 mouse 101# mouse mouse (provides events, for X11) 102# 103# Keyboard devices: 104# wskbd* wscons keyboard events 105# kbd raw keyboard (provides events, for X11) 106# kbdctl keyboard control 107# 108# Terminals/Console ports: 109# tty[01]* standard serial ports 110# tty0* SB1250 ("sbscn") serial ports (sbmips) 111# ttyE* wscons - Workstation console ("wscons") glass-tty emulators 112# ttyCZ? Cyclades-Z multiport serial boards. Each "unit" 113# makes 64 ports. 114# ttyCY? Cyclom-Y multiport serial boards. Each "unit" makes 115# 32 ports. 116# ttye* ITE bitmapped consoles 117# ttyv0 pccons 118# ttyC? NS16550 ("com") serial ports 119# ttyS* SA1110 serial port (hpcarm) 120# ttyTX? TX39 internal serial ports (hpcmips) 121# ttyB? DEC 3000 ZS8530 ("scc") serial ports (alpha) 122# ttyA* mfc serial ports (amiga) 123# ttyB* msc serial ports (amiga) 124# ttyC* com style serial ports (DraCo, HyperCom) (amiga) 125# On the DraCo, units 0 and 1 are the built-in "modem" and 126# "mouse" ports, if configured. 127# ttyA0 8530 Channel A (formerly ser02) (atari) 128# ttyA1 8530 Channel B (formerly mdm02) (atari) 129# ttyB0 UART on first 68901 (formerly mdm01) (atari) 130# ixpcom IXP12x0 COM ports 131# epcom EP93xx COM ports 132# ttyM? HP200/300 4 port serial mux interface (hp300) 133# ttya "ttya" system console (luna68k) 134# ttyb second system serial port (luna68k) 135# tty* Onboard serial ports (mvme68k) 136# On the mvme147 these are: ttyZ1, ttyZ2 and ttyZ3. 137# On the mvme167, and '177: ttyC1, ttyC2 and ttyC3. 138# Note that tty[CZ]0 is grabbed by the console device 139# so is not created by default 140# dc* PMAX 4 channel serial interface (kbd, mouse, modem, printer) 141# scc* 82530 serial interface (pmax) 142# ttyZ* Zilog 8530 ("zstty") serial ports 143# tty[abcd] Built-in serial ports (sparc) 144# tty* Z88530 serial controllers (sparc64) 145# ttyh* SAB82532 serial controllers (sparc64) 146# tty[a-j] Built-in serial ports (sun2, sun3) 147# ttyC? pccons (arc) 148# dz* UNIBUS DZ11 and DZ32 (vax) 149# dh* UNIBUS DH11 and emulations (e.g. Able DMAX, Emulex CS-11) (vax) 150# dmf* UNIBUS DMF32 (vax) 151# dhu* UNIBUS DHU11 (vax) 152# dmz* UNIBUS DMZ32 (vax) 153# dl* UNIBUS DL11 (vax) 154# xencons Xen virtual console 155# 156# Terminal multiplexors: 157# dc* 4 channel serial interface (keyboard, mouse, modem, printer) 158# dh* UNIBUS DH11 and emulations (e.g. Able DMAX, Emulex CS-11) 159# dhu* UNIBUS DHU11 160# dl* UNIBUS DL11 161# dmf* UNIBUS DMF32 162# dmz* UNIBUS DMZ32 163# dz* UNIBUS DZ11 and DZ32 164# scc* 82530 serial interface 165# 166# Call units: 167# dn* UNIBUS DN11 and emulations (e.g. Able Quadracall) 168# 169# Pseudo terminals: 170# ptm pty multiplexor device. 171# pty* set of 16 master and slave pseudo terminals 172# opty first 16 ptys, to save inodes on install media 173# ipty first 2 ptys, for install media use only 174# 175# Printers: 176# arcpp* Archimedes parallel port 177# lpt* stock lp 178# lpa* interruptless lp 179# par* Amiga motherboard parallel port 180# 181# USB devices: 182# usb* USB control devices 183# uhid* USB generic HID devices 184# ulpt* USB printer devices 185# ugen* USB generic devices 186# urio* USB Diamond Rio 500 devices 187# uscanner* USB scanners 188# ttyU* USB modems 189# ttyY* USB serial adapters 190# 191# ISDN devices: 192# isdn communication between userland isdnd and kernel 193# isdnctl control device 194# isdnbchan* raw b-channel access 195# isdntel* telephony device 196# isdnteld* telephony dialout device 197# isdntrc* trace device 198# 199# Video devices: 200# bwtwo* monochromatic frame buffer 201# cgtwo* 8-bit color frame buffer 202# cgthree* 8-bit color frame buffer 203# cgfour* 8-bit color frame buffer 204# cgsix* accelerated 8-bit color frame buffer 205# cgeight* 24-bit color frame buffer 206# etvme Tseng et-compatible cards on VME (atari) 207# ik* UNIBUS interface to Ikonas frame buffer 208# leo Circad Leonardo VME-bus true color (atari) 209# ps* UNIBUS interface to Picture System 2 210# qv* QVSS (MicroVAX) display 211# tcx* accelerated 8/24-bit color frame buffer 212# 213# Maple bus devices: 214# maple Maple bus control devices 215# mlcd* Maple bus LCD devices 216# mmem* Maple bus storage devices 217# 218# IEEE1394 bus devices: 219# fw* IEEE1394 bus generic node access devices 220# fwmem* IEEE1394 bus physical memory of the remote node access devices 221# 222# Special purpose devices: 223# ad* UNIBUS interface to Data Translation A/D converter 224# agp* AGP GART devices 225# altq ALTQ control interface 226# amr* AMI MegaRaid control device 227# apm power management device 228# audio* audio devices 229# bell* OPM bell device (x68k) 230# bktr Brooktree 848/849/878/879 based TV cards 231# bpf packet filter 232# bthub Bluetooth Device Hub control interface 233# cfs* Coda file system device 234# ch* SCSI media changer 235# cir* Consumer IR 236# clockctl clock control for non root users 237# cpuctl CPU control 238# crypto hardware crypto access driver 239# dmoverio hardware-assisted data movers 240# dpt* DPT/Adaptec EATA RAID management interface 241# dpti* DPT/Adaptec I2O RAID management interface 242# fb* PMAX generic framebuffer pseudo-device 243# fd file descriptors 244# grf* graphics frame buffer device 245# hil HP300 HIL input devices 246# icp ICP-Vortex/Intel RAID control interface 247# iic* IIC bus device 248# io x86 IOPL access for COMPAT_10, COMPAT_FREEBSD 249# iop* I2O IOP control interface 250# ipl IP Filter 251# irframe* IrDA physical frame 252# ite* terminal emulator interface to HP300 graphics devices 253# joy* joystick device 254# kttcp kernel ttcp helper device 255# lkm loadable kernel modules interface 256# lockstat kernel locking statistics 257# magma* Magma multiport serial/parallel cards 258# midi* MIDI 259# mlx* Mylex DAC960 control interface 260# mly* Mylex AcceleRAID/eXtremeRAID control interface 261# np* UNIBUS Ethernet co-processor interface, for downloading. 262# nsmb* SMB requester 263# openfirm OpenFirmware accessor 264# pad* Pseudo-audio device driver 265# pci* PCI bus access devices 266# pf PF packet filter 267# pow* power management device (x68k) 268# putter Pass-to-Userspace Transporter 269# px* PixelStamp Xserver access 270# radio* radio devices 271# random Random number generator 272# rtc* RealTimeClock 273# satlink* PlanetConnect satellite receiver driver 274# scsibus* SCSI busses 275# se* SCSI Ethernet 276# ses* SES/SAF-TE SCSI Devices 277# speaker PC speaker (XXX - installed) 278# sram battery backuped memory (x68k) 279# ss* SCSI scanner 280# stic* PixelStamp interface chip 281# sysmon System Monitoring hardware 282# systrace syscall tracer 283# tap* virtual Ethernet device 284# tun* network tunnel driver 285# twa 3ware Apache control interface 286# twe 3ware Escalade control interface 287# uk* unknown SCSI device 288# veriexec verified executable fingerprint loader 289# vmegen* generic VME access 290# view* generic interface to graphic displays (Amiga) 291# wsfont* console font control 292# wsmux* wscons event multiplexor 293# xenevt Xen event interface 294 295 296# 297# Apart from a few lines right at the end, this file should consist 298# entirely of function definitions. 299# 300# This file is used both as a standalone script (via "sh ./MAKEDEV all" 301# or similar), and as a function library (via "MAKEDEV_AS_LIBRARY=1 . 302# MAKEDEV" from MAKEDEV.local). 303# 304 305usage() 306{ 307 cat 1>&2 << _USAGE_ 308Usage: ${0##*/} [-f] [-m mknod] [-s] special [...] 309 Create listed special devices. Options: 310 -f Force permissions to be updated on existing devices. 311 -m mknod Name of mknod(8) program. [\$TOOL_MKNOD or mknod] 312 -s Generate mtree(8) specfile instead of creating devices. 313 314_USAGE_ 315 exit 1 316} 317 318# zeropad width number 319# display number with a zero (`0') padding of width digits. 320# 321zeropad() 322{ 323 case $(($1 - ${#2})) in 324 5) echo 00000$2;; 325 4) echo 0000$2;; 326 3) echo 000$2;; 327 2) echo 00$2;; 328 1) echo 0$2;; 329 0) echo $2;; 330 *) echo "$0: bad padding" 1>&2; exit 1;; 331 esac 332} 333 334# hexprint number 335# display (base10) number as hexadecimal 336# 337hexprint() 338{ 339 val="$(($1 + 0))" 340 hex= 341 set -- 0 1 2 3 4 5 6 7 8 9 a b c d e f 342 while [ "$val" -gt 0 ]; do 343 eval hex=\$$(($val % 16 + 1))\$hex 344 val="$(($val / 16))" 345 done 346 echo "${hex:-0}" 347} 348 349setup() 350{ 351 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/rescue 352 353 do_create_mfs=false 354 do_force=false 355 do_pax=false 356 do_redirect=false 357 do_specfile=false 358 opts= 359 while getopts Mfm:p:s ch; do 360 # Options that should not be passed through to 361 # MAKEDEV.local are not added to $opts. 362 case ${ch} in 363 M) 364 # "-M" sets do_create_mfs; 365 # "-M -M" also sets do_redirect 366 do_redirect=$do_create_mfs 367 do_create_mfs=true 368 ;; 369 f) do_force=true 370 opts="${opts} -f" 371 ;; 372 m) TOOL_MKNOD=${OPTARG} 373 opts="${opts} -m ${OPTARG}" 374 ;; 375 p) TOOL_PAX="${OPTARG}" 376 if ( echo "" | "${TOOL_PAX}" -w -M ); then 377 do_pax=true 378 else 379 warn "Ignored -p option:" \ 380 "${TOOL_PAX} is missing or broken" 381 fi 382 ;; 383 s) do_specfile=true 384 opts="${opts} -s" 385 ;; 386 *) usage ;; 387 esac 388 done 389 390 shift $((${OPTIND} - 1)) 391 [ $# -gt 0 ] || usage 392 393 MKNOD="${TOOL_MKNOD:-mknod} -F netbsd" 394 if $do_force; then 395 MKNOD="${MKNOD} -R" 396 else 397 MKNOD="${MKNOD} -r" 398 fi 399 400 u_root="%uid_root%" 401 u_uucp="%uid_uucp%" 402 g_kmem="%gid_kmem%" 403 g_ntpd="%gid_ntpd%" 404 g_operator="%gid_operator%" 405 g_wheel="%gid_wheel%" 406 dialin=0 407 dialout=524288 408 callunit=262144 409 410 # only allow read&write for owner by default 411 umask 077 412 413 # Check if we have fdesc mounted 414 if [ -d fd ]; then 415 case "$(df fd)" in 416 *fdesc*) nofdesc=false;; 417 *) nofdesc=true;; 418 esac 419 else 420 nofdesc=true 421 fi 422 423 if $do_pax && ! $do_specfile; then 424 do_specfile=true 425 opts="${opts} -s" 426 fi 427} 428 429# 430# functions available to create nodes: 431# 432# mkdev name [b|c] major minor [mode{=600} [gid{=0} [uid{=0}]]] 433# create device node `name' with the appropriate permissions 434# 435# lndev src target 436# create a symlink from src to target 437# 438# makedir dir mode 439# create directory with appropriate mode 440# 441 442mkdev() 443{ 444 if [ -n "$count_nodes" ]; then 445 count_nodes=$((count_nodes + 1)) 446 return 447 fi 448 if $do_specfile; then 449 case $2 in 450 b) type=block ;; 451 c) type=char ;; 452 esac 453 echo "./$1 type=${type} device=netbsd,$3,$4 mode=${5:-600} gid=${6:-$g_wheel} uid=${7:-$u_root}" 454 else 455 ${MKNOD} -m ${5:-600} -g \#${6:-$g_wheel} -u \#${7:-$u_root} $1 $2 $3 $4 456 fi 457} 458 459lndev() 460{ 461 if [ -n "$count_nodes" ]; then 462 count_nodes=$((count_nodes + 1)) 463 return 464 fi 465 if $do_specfile; then 466 echo "./$2 type=link link=$1 mode=0700 gid=$g_wheel uid=$u_root" 467 else 468 ln -f -s $1 $2 469 fi 470} 471 472makedir() 473{ 474 if [ -n "$count_nodes" ]; then 475 count_nodes=$((count_nodes + 1)) 476 return 477 fi 478 if $do_specfile; then 479 echo "./$1 type=dir mode=$2 gid=$g_wheel uid=$u_root" 480 else 481 mkdir $1 2>/dev/null 482 chmod $2 $1 483 fi 484} 485 486warn() 487{ 488 echo 1>&2 "$0: $*" 489} 490 491# wrap_makedev makedev ... 492wrap_makedev() 493{ 494 if $do_specfile; then 495 # "optional" tells pax(1) not to create the directory itself. 496 echo ". type=dir optional" 497 fi 498 eval "$@" 499} 500 501# makedev special [...] 502# the main loop 503# 504makedev() 505{ 506 507for i 508do 509 510case $i in 511 512%MD_DEVICES% 513 514all) 515 makedev all_md 516 makedev std fd ptm pty0 pty1 pty2 pty3 517 makedev ccd0 ccd1 ccd2 ccd3 518 makedev cgd0 cgd1 cgd2 cgd3 519 makedev fss0 fss1 fss2 fss3 520 makedev md0 md1 521 makedev raid0 raid1 raid2 raid3 raid4 raid5 raid6 raid7 522 makedev vnd0 vnd1 vnd2 vnd3 523 makedev bpf 524 makedev tun0 tun1 tun2 tun3 525 makedev ipl pf crypto random systrace 526 makedev lkm lockstat clockctl cpuctl 527 makedev atabus0 atabus1 atabus2 atabus3 528 makedev tap tap0 tap1 tap2 tap3 529 makedev gpio gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7 530 makedev pad pad0 pad1 pad2 pad3 531 makedev bthub 532 makedev cfs 533 makedev putter 534 makedev local # do this last 535 ;; 536 537init) 538 # unless overridden by MD entry, this is equal to 'all' 539 makedev all 540 ;; 541 542%MI_DEVICES_BEGIN% 543audio) 544 makedev audio0 audio1 audio2 audio3 545 lndev sound0 sound 546 lndev audio0 audio 547 lndev mixer0 mixer 548 lndev audioctl0 audioctl 549 ;; 550 551gpio) 552 makedev gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7 553 lndev gpio0 gpio 554 ;; 555 556pad) 557 makedev pad0 pad1 pad2 pad3 558 lndev pad0 pad 559 ;; 560 561radio) 562 makedev radio0 radio1 563 lndev radio0 radio 564 ;; 565 566ramdisk) 567 makedev floppy md0 568 ;; 569 570usbs) 571 makedev usb usb0 usb1 usb2 usb3 usb4 usb5 usb6 usb7 572 makedev uhid0 uhid1 uhid2 uhid3 573 makedev ulpt0 ulpt1 574 makedev ttyU0 ttyU1 575 makedev ttyY0 ttyY1 576 makedev urio0 577 makedev uscanner0 uscanner1 578 makedev utoppy0 utoppy1 579 makedev ugen0 580 ;; 581 582isdns) 583 makedev isdn isdnctl isdnbchan0 isdnbchan1 isdntel0 isdntel1 isdnteld0 isdnteld1 isdntrc0 isdntrc1 584 ;; 585 586std) 587 mkdev console c %cons_chr% 0 600 588 mkdev constty c %cons_chr% 1 600 589 mkdev drum c %swap_chr% 0 640 $g_kmem 590 mkdev kmem c %mem_chr% 1 640 $g_kmem 591 mkdev mem c %mem_chr% 0 640 $g_kmem 592 mkdev null c %mem_chr% 2 666 593 mkdev zero c %mem_chr% 12 666 594 mkdev klog c %log_chr% 0 600 595 mkdev ksyms c %ksyms_chr% 0 444 596 if $nofdesc; then 597 mkdev tty c %ctty_chr% 0 666 598 mkdev stdin c %filedesc_chr% 0 666 599 mkdev stdout c %filedesc_chr% 1 666 600 mkdev stderr c %filedesc_chr% 2 666 601 fi 602 ;; 603 604usb) 605 mkdev usb c %usb_chr% 255 444 606 ;; 607 608usb*) 609 unit=${i#usb} 610 usb=usb$unit 611 mkdev usb$unit c %usb_chr% $unit 612 ;; 613 614uhid*) 615 unit=${i#uhid} 616 mkdev uhid$unit c %uhid_chr% $unit 666 617 ;; 618 619ulpt*) 620 unit=${i#ulpt} 621 mkdev ulpt$unit c %ulpt_chr% $unit 622 mkdev ulpn$unit c %ulpt_chr% $(($unit + 64)) 623 ;; 624 625urio*) 626 unit=${i#urio} 627 mkdev urio$unit c %urio_chr% $unit 666 628 ;; 629 630uscanner*) 631 unit=${i#uscanner} 632 mkdev uscanner$unit c %uscanner_chr% $unit 633 ;; 634 635utoppy*) 636 unit=${i#utoppy} 637 mkdev utoppy$unit c %utoppy_chr% $unit 638 ;; 639 640ttyY*) 641 unit=${i#ttyY} 642 mkdev ttyY$unit c %ucycom_chr% $(($unit + $dialin )) "" "" $u_uucp 643 mkdev dtyY$unit c %ucycom_chr% $(($unit + $dialout )) "" "" $u_uucp 644 mkdev ctyY$unit c %ucycom_chr% $(($unit + $callunit)) "" "" $u_uucp 645 ;; 646 647ttyU*) 648 unit=${i#ttyU} 649 mkdev ttyU$unit c %ucom_chr% $(($unit + $dialin )) "" "" $u_uucp 650 mkdev dtyU$unit c %ucom_chr% $(($unit + $dialout )) "" "" $u_uucp 651 mkdev ctyU$unit c %ucom_chr% $(($unit + $callunit)) "" "" $u_uucp 652 ;; 653 654ugen*) 655 unit=${i#ugen} 656 for j in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 657 do 658 mkdev ugen$unit.$j c %ugen_chr% $(($unit * 16 + ${j#0})) 659 done 660 ;; 661 662wscons) 663 makedev ttyE0 ttyE1 ttyE2 ttyE3 ttyE4 ttyE5 ttyE6 ttyE7 664 makedev wsmouse0 wsmouse1 wsmouse2 wsmouse3 665 makedev wskbd0 wskbd1 wskbd2 wskbd3 666 makedev wsmux0 wsmux1 wsmux2 wsmux3 667 makedev wsmouse wskbd 668 makedev ttyEcfg ttyEstat 669 makedev wsfont 670 ;; 671 672wsmouse) 673 mkdev wsmouse c %wsmux_chr% 0 674 ;; 675 676wskbd) 677 mkdev wskbd c %wsmux_chr% 1 678 ;; 679 680wsmux*) 681 unit=${i#wsmux} 682 mkdev wsmux$unit c %wsmux_chr% $unit 683 mkdev wsmuxctl$unit c %wsmux_chr% $(($unit + 128)) 200 684 ;; 685 686xenevt) 687 mkdev xenevt c %xenevt_chr% 0 688 ;; 689 690xsd_kva) 691 mkdev xsd_kva c %xenevt_chr% 1 692 ;; 693 694xencons) 695 mkdev xencons c %xencons_chr% 0 696 ;; 697 698ttyEstat) 699 mkdev ttyEstat c %wsdisplay_chr% 254 700 ;; 701 702ttyEcfg) 703 mkdev ttyEcfg c %wsdisplay_chr% 255 704 ;; 705 706ttyE*) 707 unit=${i#ttyE} 708 mkdev ttyE$unit c %wsdisplay_chr% $unit 709 ;; 710 711wsmouse*) 712 unit=${i#wsmouse} 713 mkdev wsmouse$unit c %wsmouse_chr% $unit 714 ;; 715 716wskbd*) 717 unit=${i#wskbd} 718 mkdev wskbd$unit c %wskbd_chr% $unit 719 ;; 720 721fd) 722 if $nofdesc; then 723 makedir fd 755 724 n=0 725 while [ $n -lt 64 ] 726 do 727 mkdev fd/$n c %filedesc_chr% $n 666 728 n=$(($n + 1)) 729 done 730 fi 731 ;; 732 733wt*) 734 case $i in 735 wt*) name=wt; unit=${i#wt}; chr=%wt_chr%; blk=%wt_blk%;; 736 esac 737 for sub in $unit $(($unit+8)) $(($unit+16)) 738 do 739 mkdev $name$sub b $blk $(($sub + 0)) 660 $g_operator 740 mkdev n$name$sub b $blk $(($sub + 4)) 660 $g_operator 741 mkdev r$name$sub c $chr $(($sub + 0)) 660 $g_operator 742 mkdev nr$name$sub c $chr $(($sub + 4)) 660 $g_operator 743 done 744 ;; 745 746md*) 747 makedisk_minimal md ${i#md} %md_blk% %md_chr% 748 ;; 749 750fss*) 751 case $i in 752 fss*) name=fss; unit=${i#fss}; blk=%fss_blk%; chr=%fss_chr% 753 esac 754 mkdev $name$unit b $blk $unit 660 $g_operator 755 mkdev r$name$unit c $chr $unit 660 $g_operator 756 ;; 757 758ss*) 759 case $i in 760 ss*) name=ss; unit=${i#ss}; chr=%ss_chr%;; 761 esac 762 mkdev $name$unit c $chr $(($unit * 16 + 0)) 640 $g_operator 763 mkdev n$name$unit c $chr $(($unit * 16 + 1)) 640 $g_operator 764 mkdev en$name$unit c $chr $(($unit * 16 + 3)) 640 $g_operator 765 ;; 766 767ccd*|cgd*|raid*|vnd*) 768 case $i in 769 ccd*) name=ccd; unit=${i#ccd}; blk=%ccd_blk%; chr=%ccd_chr%;; 770 cgd*) name=cgd; unit=${i#cgd}; blk=%cgd_blk%; chr=%cgd_chr%;; 771 raid*) name=raid; unit=${i#raid}; blk=%raid_blk%; chr=%raid_chr%;; 772 vnd*) name=vnd; unit=${i#vnd}; blk=%vnd_blk%; chr=%vnd_chr%;; 773 esac 774 %MKDISK% $name $unit $blk $chr 775 ;; 776 777sd*) 778 name=sd; unit=${i#sd}; blk=%sd_blk%; chr=%sd_chr% 779 %MKDISK% $name $unit $blk $chr 780 ;; 781 782wd*) 783 name=wd; unit=${i#wd}; blk=%wd_blk%; chr=%wd_chr% 784 %MKDISK% $name $unit $blk $chr 785 ;; 786 787fd*) 788 name=fd; unit=${i#fd}; blk=%fd_blk%; chr=%fd_chr% 789 %MKDISK% $name $unit $blk $chr 790 ;; 791 792ld*) 793 name=ld; unit=${i#ld}; blk=%ld_blk%; chr=%ld_chr% 794 %MKDISK% $name $unit $blk $chr 795 ;; 796 797bio) 798 mkdev bio c %bio_chr% 0 799 ;; 800 801ed*) 802 name=ed; unit=${i#ed}; blk=%ed_blk%; chr=%ed_chr% 803 %MKDISK% $name $unit $blk $chr 804 ;; 805 806ofdisk*) 807 name=ofdisk; unit=${i#ofdisk}; blk=%ofdisk_blk%; chr=%ofdisk_chr% 808 %MKDISK% $name $unit $blk $chr 809 ;; 810 811xbd*) 812 name=xbd; unit=${i#xbd}; blk=%xbd_blk%; chr=%xbd_chr% 813 %MKDISK% $name $unit $blk $chr 814 ;; 815 816dk*) 817 name=dk; unit=${i#dk}; blk=%dk_blk%; chr=%dk_chr% 818 minor=0 819 while [ $minor -le ${i#dk} ] 820 do 821 mkdev r$name$minor c $chr $minor 0640 $g_operator 822 mkdev $name$minor b $blk $minor 0640 $g_operator 823 minor=$(($minor + 1)) 824 done 825 ;; 826 827ttyCY*) 828 name=tyCY; chr=%cy_chr%; off=32 829 unit=${i#t${name}} 830 minor=$(($unit * $off)) 831 eminor=$(($minor + $off)) 832 while [ $minor -lt $eminor ] 833 do 834 nminor=000$minor 835 nminor=${nminor#${nminor%???}} 836 mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp 837 mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp 838 minor=$(($minor + 1)) 839 done 840 ;; 841 842ttyCZ*) 843 name=tyCZ; chr=%cz_chr%; off=64 844 unit=${i#t${name}} 845 minor=$(($unit * $off)) 846 eminor=$(($minor + $off)) 847 while [ $minor -lt $eminor ] 848 do 849 nminor=0000$minor 850 nminor=${nminor#${nminor%????}} 851 mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp 852 mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp 853 minor=$(($minor + 1)) 854 done 855 ;; 856 857 858tty[0-9]|tty0[0-9]) 859 # some archs have built-in zstty (major %zstty_chr%) instead 860 # of NS16550; create ttyZ* and hardlink as [dt]ty0*; this 861 # needs to be before com entry, for archs which have both 862 unit=${i#tty} 863 unit=$(($unit + 0)) 864 makedev ttyZ${unit} 865 lndev ttyZ$unit tty0${unit} 866 lndev dtyZ$unit dty0${unit} 867 ;; 868 869tty0*|tty1*|tty[0-9]) 870 unit=${i#tty} 871 ounit=00$unit 872 ounit=${ounit#${ounit%??}} 873 mkdev tty$ounit c %com_chr% $(($unit + $dialin )) "" "" $u_uucp 874 mkdev dty$ounit c %com_chr% $(($unit + $dialout)) "" "" $u_uucp 875 ;; 876 877ttyC*) 878 # some archs call com_chr ttyC traditionally 879 unit=${i#ttyC}; name=ttyC; dname=dtyC; chr=%com_chr% 880 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 881 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 882 ;; 883 884ttyh*) 885 unit=${i#ttyh}; name=ttyh; dname=dtyh; chr=%sabtty_chr% 886 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 887 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 888 ;; 889 890ttyTX*) 891 unit=${i#ttyTX}; name=ttyTX0; dname=dtyTX0; chr=%txcom_chr% 892 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 893 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 894 ;; 895 896ttyZ*) 897 unit=${i#ttyZ}; name=ttyZ; dname=dtyZ; chr=%zstty_chr% 898 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 899 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 900 ;; 901 902opty) 903 for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f 904 do 905 case $j in 906 [0-9]) jn=$j ;; 907 a) jn=10 ;; 908 b) jn=11 ;; 909 c) jn=12 ;; 910 d) jn=13 ;; 911 e) jn=14 ;; 912 f) jn=15 ;; 913 esac 914 mkdev ttyp$j c %pts_chr% $jn 666 915 mkdev ptyp$j c %ptc_chr% $jn 666 916 done 917 ;; 918 919pty*) 920 class=${i#pty} 921 d1="p q r s t u v w x y z P Q R S T" 922 if [ "$class" -ge 64 ] 923 then 924 warn "$i: pty unit must be between 0 and 63" 925 continue 926 elif [ "$class" -lt 16 ] 927 then 928 offset=0 929 mult=0 930 d2="0 1 2 3 4 5 6 7 8 9 a b c d e f" 931 else 932 class=$(($class - 16)) 933 offset=256 934 mult=2 935 d2="g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" 936 fi 937 start=$(($class * 16)) 938 set -- $d2 939 nt=$# 940 s1=$(($start / $nt)) 941 set -- $d1 942 shift $s1 943 t1=$1 944 if [ "$t1" = v ]; then 945 warn "$i: pty unit conflicts with console ttyv0 device" 946 continue 947 fi 948 s2=$(($start % ($nt - $s1 * $mult))) 949 set -- $d2 950 shift $s2 951 t2=$1 952 unit=$(($start + $offset - $s1 * $mult)) 953 end=$(($unit + 16)) 954 while [ "$unit" -lt "$end" ] 955 do 956 mkdev tty$t1$t2 c %pts_chr% $unit 666 957 mkdev pty$t1$t2 c %ptc_chr% $unit 666 958 shift 959 t2=$1 960 if [ -z "$t2" ] 961 then 962 break 963 fi 964 unit=$(($unit + 1)) 965 done 966 ;; 967 968stic*) 969 unit=${i#stic} 970 mkdev stic$unit c %stic_chr% $unit 971 ;; 972 973st*) 974 case $i in 975 st*) name=st; unit=${i#st}; chr=%st_chr%; blk=%st_blk%;; 976 esac 977 mkdev $name$unit b $blk $(($unit * 16 + 0)) 660 $g_operator 978 mkdev n$name$unit b $blk $(($unit * 16 + 1)) 660 $g_operator 979 mkdev e$name$unit b $blk $(($unit * 16 + 2)) 660 $g_operator 980 mkdev en$name$unit b $blk $(($unit * 16 + 3)) 660 $g_operator 981 mkdev r$name$unit c $chr $(($unit * 16 + 0)) 660 $g_operator 982 mkdev nr$name$unit c $chr $(($unit * 16 + 1)) 660 $g_operator 983 mkdev er$name$unit c $chr $(($unit * 16 + 2)) 660 $g_operator 984 mkdev enr$name$unit c $chr $(($unit * 16 + 3)) 660 $g_operator 985 ;; 986 987ses*|ch*|uk*) 988 case $i in 989 ch*) name=ch; unit=${i#ch}; chr=%ch_chr%;; 990 uk*) name=uk; unit=${i#uk}; chr=%uk_chr%;; 991 ses*) name=ses; unit=${i#ses}; chr=%ses_chr%;; 992 esac 993 mkdev $name$unit c $chr $unit 640 $g_operator 994 ;; 995 996cd*) 997 makedisk_minimal cd ${i#cd} %cd_blk% %cd_chr% % 998 ;; 999 1000mcd*) 1001 makedisk_minimal mcd ${i#mcd} %mcd_blk% %mcd_chr% 1002 ;; 1003 1004gdrom*) 1005 makedisk_minimal gdrom ${i#gdrom} %gdrom_blk% %gdrom_chr% 1006 ;; 1007 1008lpt*|lpa*) 1009 case $i in 1010 lpt*) name=lpt; unit=${i#lpt}; chr=%lpt_chr%; flags=0;; 1011 lpa*) name=lpa; unit=${i#lpa}; chr=%lpt_chr%; flags=128;; 1012 esac 1013 mkdev $name$unit c $chr $(($unit + $flags)) 1014 mkdev lpt${unit}ctl c $chr $(($unit + 256)) 1015 ;; 1016 1017bpf) 1018 mkdev bpf c %bpf_chr% 0 1019 lndev bpf bpf0 1020 ;; 1021 1022bthub) 1023 mkdev bthub c %bthub_chr% 0 1024 ;; 1025 1026tun*) 1027 unit=${i#tun} 1028 mkdev tun$unit c %tun_chr% $unit 1029 ;; 1030 1031joy*) 1032 unit=${i#joy} 1033 mkdev joy$unit c %joy_chr% $unit 1034 ;; 1035 1036ipl) 1037 mkdev ipl c %ipl_chr% 0 1038 mkdev ipnat c %ipl_chr% 1 1039 mkdev ipstate c %ipl_chr% 2 1040 mkdev ipauth c %ipl_chr% 3 1041 mkdev ipsync c %ipl_chr% 4 1042 mkdev ipscan c %ipl_chr% 5 1043 mkdev iplookup c %ipl_chr% 6 1044 ;; 1045 1046pf) 1047 mkdev pf c %pf_chr% 0 1048 ;; 1049 1050crypto) 1051 mkdev crypto c %crypto_chr% 0 666 1052 ;; 1053 1054cmos) 1055 mkdev cmos c %cmos_chr% 0 644 1056 ;; 1057 1058speaker) 1059 mkdev speaker c %spkr_chr% 0 1060 ;; 1061 1062lkm) 1063 mkdev lkm c %lkm_chr% 0 640 $g_kmem 1064 ;; 1065 1066lockstat) 1067 mkdev lockstat c %lockstat_chr% 0 1068 ;; 1069 1070cpuctl) 1071 mkdev cpuctl c %cpuctl_chr% 0 666 1072 ;; 1073 1074audio*) 1075 unit=${i#audio} 1076 audio=audio$unit 1077 sound=sound$unit 1078 mixer=mixer$unit 1079 audioctl=audioctl$unit 1080 : ${unit:-0} 1081 mkdev $sound c %audio_chr% $(($unit + 0)) 666 1082 mkdev $audio c %audio_chr% $(($unit + 128)) 666 1083 mkdev $mixer c %audio_chr% $(($unit + 16)) 666 1084 mkdev $audioctl c %audio_chr% $(($unit + 192)) 666 1085 ;; 1086 1087gpio*) 1088 unit=${i#gpio} 1089 mkdev gpio$unit c %gpio_chr% $unit 644 1090 ;; 1091 1092rmidi*) 1093 unit=${i#rmidi} 1094 mkdev rmidi$unit c %midi_chr% $unit 666 1095 ;; 1096 1097music*) 1098 unit=${i#music} 1099 : ${unit:-0} 1100 mkdev music$unit c %sequencer_chr% $(($unit + 0)) 666 1101 mkdev sequencer$unit c %sequencer_chr% $(($unit + 128)) 666 1102 ;; 1103 1104radio*) 1105 unit=${i#radio} 1106 : ${unit:-0} 1107 mkdev radio$unit c %radio_chr% $unit 666 1108 ;; 1109 1110amr*) 1111 unit=${i#amr} 1112 mkdev amr$unit c %amr_chr% $unit 1113 ;; 1114 1115apm) 1116 mkdev apm c %apm_chr% 0 644 1117 mkdev apmctl c %apm_chr% 8 644 1118 ;; 1119 1120apm) 1121 # hpcmips uses `apmdev_chr' instead of `apm_chr' 1122 mkdev apm c %apmdev_chr% 0 644 1123 mkdev apmctl c %apmdev_chr% 8 644 1124 ;; 1125 1126satlink*) 1127 unit=${i#satlink} 1128 mkdev satlink$unit c %satlink_chr% $unit 444 1129 ;; 1130 1131random) 1132 mkdev random c %rnd_chr% 0 444 1133 mkdev urandom c %rnd_chr% 1 644 1134 ;; 1135 1136cfs) 1137 makedev cfs0 1138 ;; 1139 1140cfs*) 1141 unit=${i#cfs} 1142 mkdev cfs$unit c %vcoda_chr% $unit 1143 ;; 1144 1145sysmon) 1146 mkdev sysmon c %sysmon_chr% 0 644 1147 mkdev watchdog c %sysmon_chr% 1 644 1148 mkdev power c %sysmon_chr% 2 640 1149 ;; 1150 1151scsibus*) 1152 unit=${i#scsibus} 1153 mkdev scsibus$unit c %scsibus_chr% $unit 644 1154 ;; 1155 1156bktr) 1157 makedev bktr0 bktr1 1158 lndev bktr0 bktr 1159 lndev tuner0 tuner 1160 lndev vbi0 vbi 1161 ;; 1162 1163bktr*) 1164 unit=${i#bktr} 1165 mkdev bktr$unit c %bktr_chr% $(($unit + 0)) 444 1166 mkdev tuner$unit c %bktr_chr% $(($unit + 16)) 444 1167 mkdev vbi$unit c %bktr_chr% $(($unit + 32)) 444 1168 ;; 1169 1170io) 1171 mkdev io c %mem_chr% 14 600 1172 ;; 1173 1174iop*) 1175 unit=${i#iop} 1176 mkdev iop$unit c %iop_chr% $unit 1177 ;; 1178 1179mlx*) 1180 unit=${i#mlx} 1181 mkdev mlx$unit c %mlx_chr% $unit 1182 ;; 1183 1184mly*) 1185 unit=${i#mly} 1186 mkdev mly$unit c %mly_chr% $unit 1187 ;; 1188 1189twa*) 1190 unit=${i#twa} 1191 mkdev twa$unit c %twa_chr% $unit 1192 ;; 1193 1194twe*) 1195 unit=${i#twe} 1196 mkdev twe$unit c %twe_chr% $unit 1197 ;; 1198 1199icp*) 1200 unit=${i#icp} 1201 mkdev icp$unit c %icp_chr% $unit 1202 ;; 1203 1204agp*) 1205 unit=${i#agp} 1206 mkdev agp$unit c %agp_chr% $unit 644 1207 if [ "$unit" = "0" ]; then 1208 lndev agp$unit agpgart 1209 fi 1210 ;; 1211 1212pci*) 1213 unit=${i#pci} 1214 mkdev pci$unit c %pci_chr% $unit 644 1215 ;; 1216 1217dpti*) 1218 unit=${i#dpti} 1219 mkdev dpti$unit c %dpti_chr% $unit 1220 ;; 1221 1222dpt*) 1223 unit=${i#dpt} 1224 mkdev dpt$unit c %dpt_chr% $unit 1225 ;; 1226 1227altq) 1228 makedir altq 755 1229 unit=0 1230 for dev in altq cbq wfq afm fifoq red rio localq hfsc cdnr blue priq 1231 do 1232 mkdev altq/$dev c %altq_chr% $unit 644 1233 unit=$(($unit + 1)) 1234 done 1235 ;; 1236 1237isdn) 1238 mkdev isdn c %isdn_chr% 0 1239 ;; 1240 1241isdnctl) 1242 mkdev isdnctl c %isdnctl_chr% 0 1243 ;; 1244 1245isdnbchan*) 1246 unit=${i#isdnbchan} 1247 mkdev isdnbchan$unit c %isdnbchan_chr% $unit 1248 ;; 1249 1250isdnteld*) 1251 unit=${i#isdnteld} 1252 mkdev isdnteld$unit c %isdntel_chr% $(($unit + 64)) 1253 ;; 1254 1255isdntel*) 1256 unit=${i#isdntel} 1257 mkdev isdntel$unit c %isdntel_chr% $unit 1258 ;; 1259 1260isdntrc*) 1261 unit=${i#isdntrc} 1262 mkdev isdntrc$unit c %isdntrc_chr% $unit 1263 ;; 1264 1265vmegen) 1266 makedev vmegen0 vmegen1 vmegen2 vmegen3 1267 ;; 1268 1269vmegen*) 1270 unit=${i#vmegen} 1271 mkdev vmegen$unit c %vmegeneric_chr% $(($unit * 16 + 0)) 1272 ;; 1273 1274wsfont) 1275 mkdev wsfont c %wsfont_chr% 0 1276 ;; 1277 1278cir*) 1279 unit=${i#cir} 1280 mkdev cir$unit c %cir_chr% $unit 666 1281 ;; 1282 1283irframe*) 1284 unit=${i#irframe} 1285 mkdev irframe$unit c %irframe_chr% $unit 1286 ;; 1287 1288fcom*) 1289 unit=${i#fcom} 1290 mkdev fcom$unit c %fcom_chr% $unit "" "" $u_uucp 1291 ;; 1292 1293openfirm) 1294 mkdev openfirm c %openfirm_chr% 0 444 1295 ;; 1296 1297pad*) 1298 unit=${i#pad} 1299 mkdev pad$unit c %pad_chr% $unit 444 1300 ;; 1301 1302nvram) 1303 mkdev nvram c %nvram_chr% 0 644 1304 ;; 1305 1306rtc) 1307 mkdev rtc c %rtc_chr% 0 644 1308 ;; 1309 1310clockctl) 1311 mkdev clockctl c %clockctl_chr% 0 660 $g_ntpd 1312 ;; 1313 1314nsmb) 1315 makedev nsmb0 nsmb1 nsmb2 nsmb3 1316 ;; 1317 1318nsmb*) 1319 unit=${i#nsmb} 1320 mkdev nsmb$unit c %nsmb_chr% $unit 644 1321 ;; 1322 1323systrace) 1324 mkdev systrace c %systrace_chr% 0 644 1325 ;; 1326 1327kttcp) 1328 mkdev kttcp c %kttcp_chr% 0 1329 ;; 1330 1331dmoverio) 1332 mkdev dmoverio c %dmoverio_chr% 0 644 1333 ;; 1334 1335veriexec) 1336 mkdev veriexec c %veriexec_chr% 0 600 1337 ;; 1338 1339ttyv*) 1340 unit=${i#ttyv} 1341 mkdev ttyv$unit c %pc_chr% $unit 1342 ;; 1343 1344# arm, acorn32 1345ttyv*) 1346 unit=${i#ttyv} 1347 mkdev ttyv$unit c %physcon_chr% $unit 1348 ;; 1349 1350arcpp*) 1351 unit=${i#arcpp} 1352 mkdev arcpp$unit c %arcpp_chr% $unit 1353 ;; 1354 1355par*) 1356 unit=${i#par} 1357 case $unit in 1358 0) 1359 mkdev par$unit c %par_chr% $unit 1360 ;; 1361 *) 1362 warn "bad unit for par in: $i" 1363 ;; 1364 esac 1365 ;; 1366 1367ite*|ttye*) 1368 case $i in 1369 ite*) unit=${i#ite};; 1370 ttye*) unit=${i#ttye};; 1371 esac 1372 mkdev ttye$unit c %ite_chr% $unit 1373 ;; 1374 1375pms*) 1376 unit=${i#pms} 1377 mkdev pms$unit c %opms_chr% $unit 1378 ;; 1379 1380qms*) 1381 unit=${i#qms} 1382 mkdev qms$unit c %qms_chr% $unit 1383 ;; 1384 1385lms*) 1386 unit=${i#lms} 1387 mkdev lms$unit c %lms_chr% $unit 1388 ;; 1389 1390mms*) 1391 unit=${i#mms} 1392 mkdev mms$unit c %mms_chr% $unit 1393 ;; 1394 1395mouse-*) 1396 case $i in 1397 mouse-pms*) name=pms ;; 1398 mouse-qms*) name=qms ;; 1399 esac 1400 unit=${i#mouse-${name}} 1401 lndev $name$unit mouse 1402 ;; 1403 1404kbd) 1405 mkdev kbd c %kbd_chr% 0 1406 ;; 1407 1408kbdctl) 1409 mkdev kbdctl c %kbd_chr% 1 1410 ;; 1411 1412vidcconsole0) 1413 mkdev vidcconsole0 c %vidcconsole_chr% 0 640 1414 ;; 1415 1416view*) 1417 unit=${i#view} 1418 mkdev view$unit c %view_chr% $unit 666 1419 ;; 1420 1421mouse*) 1422 unit=${i#mouse} 1423 case $unit in 1424 0|1) 1425 mkdev mouse$unit c %ms_chr% $unit 666 1426 if [ $unit = 0 ]; then 1427 lndev mouse$unit mouse 1428 fi 1429 ;; 1430 *) 1431 warn "bad unit for mouse in: $i" 1432 ;; 1433 esac 1434 ;; 1435 1436panel) 1437 mkdev panel0 c %panel_chr% 0 660 1438 ;; 1439 1440tslcd) 1441 mkdev tslcd0 c %tslcd_chr% 0 660 1442 ;; 1443 1444ipty) 1445 mkdev ttyp0 c %pts_chr% 0 666 1446 mkdev ttyp1 c %pts_chr% 1 666 1447 mkdev ptyp0 c %ptc_chr% 0 666 1448 mkdev ptyp1 c %ptc_chr% 1 666 1449 ;; 1450 1451ptm) 1452 mkdev ptmx c %ptm_chr% 0 666 1453 mkdev ptm c %ptm_chr% 1 666 1454 ;; 1455 1456grf*) 1457 unit=${i#grf} 1458 mkdev grf$unit c %grf_chr% $unit 666 1459 ;; 1460 1461etvme) 1462 mkdev etvme c %et_chr% 0 1463 ;; 1464 1465leo*) 1466 unit=${i#leo} 1467 mkdev leo$unit c %leo_chr% $unit 1468 ;; 1469 1470scif*) 1471 unit=${i#scif} 1472 mkdev scif$unit c %scif_chr% $unit "" "" $u_uucp 1473 ;; 1474 1475sci*) 1476 unit=${i#sci} 1477 mkdev sci$unit c %sci_chr% $unit "" "" $u_uucp 1478 ;; 1479 1480maple*) 1481 case $i in 1482 mapleA*) name="mapleA"; unit=0;; 1483 mapleB*) name="mapleB"; unit=1;; 1484 mapleC*) name="mapleC"; unit=2;; 1485 mapleD*) name="mapleD"; unit=3;; 1486 esac 1487 subunit=${i#$name} 1488 mkdev $name$subunit c %maple_chr% $(($unit * 8 + 0$subunit)) 1489 ;; 1490 1491mmem*) 1492 unit=${i#mmem} 1493 for pt in 0 # 1 2 3 4 ... 255 1494 do 1495# mkdev mmem${unit}.${pt}a b %mmem_blk% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator 1496 mkdev mmem${unit}.${pt}c b %mmem_blk% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator 1497# mkdev rmmem${unit}.${pt}a c %mmem_chr% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator 1498 mkdev rmmem${unit}.${pt}c c %mmem_chr% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator 1499 done 1500 ;; 1501 1502mlcd*) 1503 unit=${i#mlcd} 1504 for pt in 0 # 1 2 3 4 ... 255 1505 do 1506 mkdev mlcd${unit}.${pt} c %mlcd_chr% $(($unit * 256 + $pt)) 640 $g_operator 1507 done 1508 ;; 1509 1510ixpcom*) 1511 unit=${i#ixpcom} 1512 mkdev ixpcom$unit c %ixpcom_chr% $unit "" "" $u_uucp 1513 ;; 1514 1515epcom*) 1516 unit=${i#epcom} 1517 mkdev epcom$unit c %epcom_chr% $unit "" "" $u_uucp 1518 ;; 1519 1520ucbsnd) 1521 mkdev ucbsnd c %ucbsnd_chr% 0 666 1522 ;; 1523 1524adb) 1525 mkdev adb c %aed_chr% 0 666 1526 ;; 1527 1528asc*) 1529 unit=${i#asc} 1530 mkdev asc$unit c %asc_chr% $unit 666 1531 ;; 1532 1533bwtwo*) 1534 unit=${i#bwtwo} 1535 mkdev bwtwo$unit c %bwtwo_chr% $unit 666 1536 ;; 1537 1538cgtwo*) 1539 unit=${i#cgtwo} 1540 mkdev cgtwo$unit c %cgtwo_chr% $unit 666 1541 ;; 1542 1543cgthree*) 1544 unit=${i#cgthree} 1545 mkdev cgthree$unit c %cgthree_chr% $unit 666 1546 ;; 1547 1548cgfour*) 1549 unit=${i#cgfour} 1550 mkdev cgfour$unit c %cgfour_chr% $unit 666 1551 ;; 1552 1553cgsix*) 1554 unit=${i#cgsix} 1555 mkdev cgsix$unit c %cgsix_chr% $unit 666 1556 ;; 1557 1558cgeight*) 1559 unit=${i#cgeight} 1560 mkdev cgeight$unit c %cgeight_chr% $unit 666 1561 ;; 1562 1563tcx*) 1564 unit=${i#tcx} 1565 mkdev tcx$unit c %tcx_chr% $unit 666 1566 ;; 1567 1568xd*|xy*) 1569 case $i in 1570 xd*) name=xd; unit=${i#xd}; blk=%xd_blk%; chr=%xd_chr%;; 1571 xy*) name=xy; unit=${i#xy}; blk=%xy_blk%; chr=%xy_chr%;; 1572 esac 1573 %MKDISK% $name $unit $blk $chr 1574 ;; 1575 1576magma*) 1577 unit=${i#magma} 1578 if [ 0$unit -gt 3 ]; then 1579 warn "bad unit for $i: $unit" 1580 break 1581 fi 1582 for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f 1583 do 1584 case $j in 1585 [0-9]) jn=$j ;; 1586 a) jn=10 ;; 1587 b) jn=11 ;; 1588 c) jn=12 ;; 1589 d) jn=13 ;; 1590 e) jn=14 ;; 1591 f) jn=15 ;; 1592 esac 1593 mkdev tty$unit$j c %mtty_chr% $(($unit * 64 + $jn)) 1594 done 1595 mkdev bpp${unit}0 c %mbpp_chr% $(($unit * 64 + 0)) 1596 mkdev bpp${unit}1 c %mbpp_chr% $(($unit * 64 + 1)) 1597 ;; 1598 1599clcd*) 1600 unit=${i#clcd} 1601 if [ 0$unit -gt 7 ]; then 1602 warn "bad unit for $i: $unit" 1603 break 1604 fi 1605 for j in 0 1 2 3 4 5 6 7 1606 do 1607 mkdev ttyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialin)) "" "" $u_uucp 1608 mkdev dtyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialout)) "" "" $u_uucp 1609 done 1610 ;; 1611 1612spif*) 1613 unit=${i#spif} 1614 if [ 0$unit -gt 3 ]; then 1615 warn "bad unit for $i: $unit" 1616 break 1617 fi 1618 for j in 0 1 2 3 4 5 6 7; do 1619 mkdev ttyS$unit$j c 102 $(($unit * 64 + $j)) "" "" $u_uucp 1620 done 1621 mkdev bppS${unit}0 c 103 $(($unit * 64 + 0)) 1622 mkdev bppS${unit}1 c 103 $(($unit * 64 + 1)) 1623 ;; 1624 1625bpp*) 1626 unit=${i#bpp} 1627 mkdev bpp$unit c %bpp_chr% $(($unit + 0)) 1628 ;; 1629 1630tctrl*) 1631 unit=${i#tctrl} 1632 mkdev tctrl$unit c %tctrl_chr% $unit 666 1633 ;; 1634 1635bmd*) 1636 unit=${i#bmd} 1637 mkdev bmd${unit}a b %bmd_blk% $(($unit * 8 + 0)) 640 $g_operator 1638 mkdev bmd${unit}c b %bmd_blk% $(($unit * 8 + 2)) 640 $g_operator 1639 mkdev rbmd${unit}a c %bmd_chr% $(($unit * 8 + 0)) 640 $g_operator 1640 mkdev rbmd${unit}c c %bmd_chr% $(($unit * 8 + 2)) 640 $g_operator 1641 ;; 1642 1643sram) 1644 mkdev sram c %sram_chr% 0 644 1645 ;; 1646 1647pow*) 1648 unit=${i#pow} 1649 case $unit in 1650 0|1) 1651 mkdev pow${unit} c %pow_chr% ${unit} 644 1652 if [ $unit = 0 ]; then 1653 lndev pow${unit} pow 1654 fi 1655 ;; 1656 *) 1657 warn "bad unit for pow in: $i" 1658 ;; 1659 esac 1660 ;; 1661 1662ttyS*) 1663 unit=${i#ttyS} 1664 mkdev ttyS$unit c %sacom_chr% $(($unit + $dialin )) "" "" $u_uucp 1665 mkdev dtyS$unit c %sacom_chr% $(($unit + $dialout)) "" "" $u_uucp 1666 ;; 1667 1668atabus*) 1669 unit=${i#atabus} 1670 mkdev atabus$unit c %atabus_chr% $unit 644 1671 ;; 1672 1673drvctl) 1674 mkdev drvctl c %drvctl_chr% 0 644 1675 ;; 1676 1677tap*) 1678 unit=${i#tap} 1679 case "$unit" in 1680 [0-9]*) 1681 mkdev tap${unit} c %tap_chr% ${unit} 600 1682 ;; 1683 *) 1684 mkdev tap c %tap_chr% 0xfffff 600 1685 ;; 1686 esac 1687 ;; 1688 1689fw*) 1690 unit=${i#fw} 1691 for j in 0 1 2 3 1692 do 1693 mkdev fw${unit}.${j} c %fw_chr% $((${unit} * 256 + ${j})) 660 ${g_operator} 1694 mkdev fwmem${unit}.${j} c %fw_chr% $((65536 + ${unit} * 256 + ${j})) 660 ${g_operator} 1695 done 1696 ;; 1697 1698# create putter device and symlinks for all subsystems using it 1699putter) 1700 mkdev putter c %putter_chr% 0 600 1701 mkdev pud c %putter_chr% 1 600 1702 lndev putter puffs 1703 ;; 1704 1705midevend) 1706%MI_DEVICES_END% 1707local) 1708 if [ -f "$0.local" ]; then 1709 umask 0 1710 if [ -n "$count_nodes" ]; then 1711 sh "$0.local" $opts -s all | \ 1712 while read l; do 1713 count_nodes=$((count_nodes + 1)) 1714 done 1715 else 1716 sh "$0.local" $opts all 1717 fi 1718 umask 077 1719 else 1720 warn "missing $0.local" 1721 fi 1722 ;; 1723 1724*) 1725 warn "$i: unknown device" 1726 ;; 1727 1728esac 1729done 1730 1731} 1732 1733 1734# three variants of disk partitions - max 8, max 16, max 16 with highpartoffset 1735# hack; only the one used by port is retained in final MAKEDEV script 1736# routine is called as: 1737# makedisk name unit blk chr 1738makedisk_p8() 1739{ 1740 name="$1"; unit="$2"; blk="$3"; chr="$4" 1741 1742 mkdev ${name}${unit}a b $blk $(($unit * 8 + 0)) 640 $g_operator 1743 mkdev ${name}${unit}b b $blk $(($unit * 8 + 1)) 640 $g_operator 1744 mkdev ${name}${unit}c b $blk $(($unit * 8 + 2)) 640 $g_operator 1745 mkdev ${name}${unit}d b $blk $(($unit * 8 + 3)) 640 $g_operator 1746 mkdev ${name}${unit}e b $blk $(($unit * 8 + 4)) 640 $g_operator 1747 mkdev ${name}${unit}f b $blk $(($unit * 8 + 5)) 640 $g_operator 1748 mkdev ${name}${unit}g b $blk $(($unit * 8 + 6)) 640 $g_operator 1749 mkdev ${name}${unit}h b $blk $(($unit * 8 + 7)) 640 $g_operator 1750 mkdev r${name}${unit}a c $chr $(($unit * 8 + 0)) 640 $g_operator 1751 mkdev r${name}${unit}b c $chr $(($unit * 8 + 1)) 640 $g_operator 1752 mkdev r${name}${unit}c c $chr $(($unit * 8 + 2)) 640 $g_operator 1753 mkdev r${name}${unit}d c $chr $(($unit * 8 + 3)) 640 $g_operator 1754 mkdev r${name}${unit}e c $chr $(($unit * 8 + 4)) 640 $g_operator 1755 mkdev r${name}${unit}f c $chr $(($unit * 8 + 5)) 640 $g_operator 1756 mkdev r${name}${unit}g c $chr $(($unit * 8 + 6)) 640 $g_operator 1757 mkdev r${name}${unit}h c $chr $(($unit * 8 + 7)) 640 $g_operator 1758} 1759 1760makedisk_p16() 1761{ 1762 name="$1"; unit="$2"; blk="$3"; chr="$4" 1763 1764 mkdev ${name}${unit}a b $blk $(($unit * 16 + 0)) 640 $g_operator 1765 mkdev ${name}${unit}b b $blk $(($unit * 16 + 1)) 640 $g_operator 1766 mkdev ${name}${unit}c b $blk $(($unit * 16 + 2)) 640 $g_operator 1767 mkdev ${name}${unit}d b $blk $(($unit * 16 + 3)) 640 $g_operator 1768 mkdev ${name}${unit}e b $blk $(($unit * 16 + 4)) 640 $g_operator 1769 mkdev ${name}${unit}f b $blk $(($unit * 16 + 5)) 640 $g_operator 1770 mkdev ${name}${unit}g b $blk $(($unit * 16 + 6)) 640 $g_operator 1771 mkdev ${name}${unit}h b $blk $(($unit * 16 + 7)) 640 $g_operator 1772 mkdev ${name}${unit}i b $blk $(($unit * 16 + 8)) 640 $g_operator 1773 mkdev ${name}${unit}j b $blk $(($unit * 16 + 9)) 640 $g_operator 1774 mkdev ${name}${unit}k b $blk $(($unit * 16 + 10)) 640 $g_operator 1775 mkdev ${name}${unit}l b $blk $(($unit * 16 + 11)) 640 $g_operator 1776 mkdev ${name}${unit}m b $blk $(($unit * 16 + 12)) 640 $g_operator 1777 mkdev ${name}${unit}n b $blk $(($unit * 16 + 13)) 640 $g_operator 1778 mkdev ${name}${unit}o b $blk $(($unit * 16 + 14)) 640 $g_operator 1779 mkdev ${name}${unit}p b $blk $(($unit * 16 + 15)) 640 $g_operator 1780 mkdev r${name}${unit}a c $chr $(($unit * 16 + 0)) 640 $g_operator 1781 mkdev r${name}${unit}b c $chr $(($unit * 16 + 1)) 640 $g_operator 1782 mkdev r${name}${unit}c c $chr $(($unit * 16 + 2)) 640 $g_operator 1783 mkdev r${name}${unit}d c $chr $(($unit * 16 + 3)) 640 $g_operator 1784 mkdev r${name}${unit}e c $chr $(($unit * 16 + 4)) 640 $g_operator 1785 mkdev r${name}${unit}f c $chr $(($unit * 16 + 5)) 640 $g_operator 1786 mkdev r${name}${unit}g c $chr $(($unit * 16 + 6)) 640 $g_operator 1787 mkdev r${name}${unit}h c $chr $(($unit * 16 + 7)) 640 $g_operator 1788 mkdev r${name}${unit}i c $chr $(($unit * 16 + 8)) 640 $g_operator 1789 mkdev r${name}${unit}j c $chr $(($unit * 16 + 9)) 640 $g_operator 1790 mkdev r${name}${unit}k c $chr $(($unit * 16 + 10)) 640 $g_operator 1791 mkdev r${name}${unit}l c $chr $(($unit * 16 + 11)) 640 $g_operator 1792 mkdev r${name}${unit}m c $chr $(($unit * 16 + 12)) 640 $g_operator 1793 mkdev r${name}${unit}n c $chr $(($unit * 16 + 13)) 640 $g_operator 1794 mkdev r${name}${unit}o c $chr $(($unit * 16 + 14)) 640 $g_operator 1795 mkdev r${name}${unit}p c $chr $(($unit * 16 + 15)) 640 $g_operator 1796} 1797 1798makedisk_p16high() 1799{ 1800 ho=524280 # offset for partition 9 to 16 1801 name="$1"; unit="$2"; blk="$3"; chr="$4" 1802 1803 mkdev ${name}${unit}a b $blk $(($unit * 8 + 0)) 640 $g_operator 1804 mkdev ${name}${unit}b b $blk $(($unit * 8 + 1)) 640 $g_operator 1805 mkdev ${name}${unit}c b $blk $(($unit * 8 + 2)) 640 $g_operator 1806 mkdev ${name}${unit}d b $blk $(($unit * 8 + 3)) 640 $g_operator 1807 mkdev ${name}${unit}e b $blk $(($unit * 8 + 4)) 640 $g_operator 1808 mkdev ${name}${unit}f b $blk $(($unit * 8 + 5)) 640 $g_operator 1809 mkdev ${name}${unit}g b $blk $(($unit * 8 + 6)) 640 $g_operator 1810 mkdev ${name}${unit}h b $blk $(($unit * 8 + 7)) 640 $g_operator 1811 mkdev ${name}${unit}i b $blk $(($unit * 8 + $ho + 8)) 640 $g_operator 1812 mkdev ${name}${unit}j b $blk $(($unit * 8 + $ho + 9)) 640 $g_operator 1813 mkdev ${name}${unit}k b $blk $(($unit * 8 + $ho + 10)) 640 $g_operator 1814 mkdev ${name}${unit}l b $blk $(($unit * 8 + $ho + 11)) 640 $g_operator 1815 mkdev ${name}${unit}m b $blk $(($unit * 8 + $ho + 12)) 640 $g_operator 1816 mkdev ${name}${unit}n b $blk $(($unit * 8 + $ho + 13)) 640 $g_operator 1817 mkdev ${name}${unit}o b $blk $(($unit * 8 + $ho + 14)) 640 $g_operator 1818 mkdev ${name}${unit}p b $blk $(($unit * 8 + $ho + 15)) 640 $g_operator 1819 mkdev r${name}${unit}a c $chr $(($unit * 8 + 0)) 640 $g_operator 1820 mkdev r${name}${unit}b c $chr $(($unit * 8 + 1)) 640 $g_operator 1821 mkdev r${name}${unit}c c $chr $(($unit * 8 + 2)) 640 $g_operator 1822 mkdev r${name}${unit}d c $chr $(($unit * 8 + 3)) 640 $g_operator 1823 mkdev r${name}${unit}e c $chr $(($unit * 8 + 4)) 640 $g_operator 1824 mkdev r${name}${unit}f c $chr $(($unit * 8 + 5)) 640 $g_operator 1825 mkdev r${name}${unit}g c $chr $(($unit * 8 + 6)) 640 $g_operator 1826 mkdev r${name}${unit}h c $chr $(($unit * 8 + 7)) 640 $g_operator 1827 mkdev r${name}${unit}i c $chr $(($unit * 8 + $ho + 8)) 640 $g_operator 1828 mkdev r${name}${unit}j c $chr $(($unit * 8 + $ho + 9)) 640 $g_operator 1829 mkdev r${name}${unit}k c $chr $(($unit * 8 + $ho + 10)) 640 $g_operator 1830 mkdev r${name}${unit}l c $chr $(($unit * 8 + $ho + 11)) 640 $g_operator 1831 mkdev r${name}${unit}m c $chr $(($unit * 8 + $ho + 12)) 640 $g_operator 1832 mkdev r${name}${unit}n c $chr $(($unit * 8 + $ho + 13)) 640 $g_operator 1833 mkdev r${name}${unit}o c $chr $(($unit * 8 + $ho + 14)) 640 $g_operator 1834 mkdev r${name}${unit}p c $chr $(($unit * 8 + $ho + 15)) 640 $g_operator 1835} 1836 1837# make only the very few basic disk device nodes - 'a' partition 1838# and raw partition 1839makedisk_minimal() 1840{ 1841 name=$1; unit=$2; blk=$3; chr=$4 1842 doff=%DISKMINOROFFSET% 1843 ro=%RAWDISK_OFF% 1844 rn=%RAWDISK_NAME% 1845 1846 mkdev ${name}${unit}a b $blk $(($unit * $doff + 0)) 640 $g_operator 1847 mkdev ${name}${unit}$rn b $blk $(($unit * $doff + $ro)) 640 $g_operator 1848 mkdev r${name}${unit}a c $chr $(($unit * $doff + 0)) 640 $g_operator 1849 mkdev r${name}${unit}$rn c $chr $(($unit * $doff + $ro)) 640 $g_operator 1850} 1851 1852create_mfs_dev() 1853{ 1854 ninode=$((${1-1200} * 11 / 10)) 1855 fs_size=$((8192 + 2 * 8192 + 4096 + ninode*(128+18) + 8192)) 1856 fs_size=$((fs_size/512)) 1857 [ "$fs_size" -lt 80 ] && fs_size=80 1858 1859 dev_mountpoint=${PWD:-/dev} 1860 mount_mfs -b 4096 -f 512 -s $fs_size -n $ninode -p 07555 -o union swap $dev_mountpoint 1861 1862 cd $dev_mountpoint 1863 if $do_redirect; then 1864 # Redirect stdout and stderr to console 1865 mknod -m 600 -g 0 -u 0 temp_console c 0 0 1866 exec >temp_console 2>&1 1867 rm temp_console 1868 fi 1869 echo "Created mfs $dev_mountpoint ($fs_size blocks, $ninode inodes)" 1870} 1871 1872# 1873# MAIN: If MAKEDEV_AS_LIBRARY is set, then we are being used as a 1874# function library, so just return. Otherwise, call the setup function 1875# to parse command line args and set some other variables; then call the 1876# makedev function to create requested devices. 1877# 1878[ -n "${MAKEDEV_AS_LIBRARY}" ] && return 1879 1880setup ${1+"$@"} 1881shift $((${OPTIND}-1)) 1882 1883if $do_create_mfs; then 1884 # Count inodes and create mfs file system 1885 count_nodes=0 1886 makedev ${1+"$@"} 1887 create_mfs_dev $count_nodes 1888 unset count_nodes 1889fi 1890 1891if $do_pax ; then 1892 # wrap_makedev will print an mtree specification; 1893 # pax will create device nodes. 1894 wrap_makedev makedev ${1+"$@"} | ${TOOL_PAX} -r -w -M . 1895else 1896 wrap_makedev makedev ${1+"$@"} 1897fi 1898