MAKEDEV.tmpl revision 1.88
1#!/bin/sh - 2# $NetBSD: MAKEDEV.tmpl,v 1.88 2007/11/03 19:33:36 gdt 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# pci* PCI bus access devices 265# pf PF packet filter 266# pow* power management device (x68k) 267# puffs Pass-to-Userspace Framework File System 268# px* PixelStamp Xserver access 269# radio* radio devices 270# random Random number generator 271# rtc* RealTimeClock 272# satlink* PlanetConnect satellite receiver driver 273# scsibus* SCSI busses 274# se* SCSI Ethernet 275# ses* SES/SAF-TE SCSI Devices 276# speaker PC speaker (XXX - installed) 277# sram battery backuped memory (x68k) 278# ss* SCSI scanner 279# stic* PixelStamp interface chip 280# sysmon System Monitoring hardware 281# systrace syscall tracer 282# tap* virtual Ethernet device 283# tun* network tunnel driver 284# twa 3ware Apache control interface 285# twe 3ware Escalade control interface 286# uk* unknown SCSI device 287# veriexec verified executable fingerprint loader 288# vmegen* generic VME access 289# view* generic interface to graphic displays (Amiga) 290# wsfont* console font control 291# wsmux* wscons event multiplexor 292# xenevt Xen event interface 293 294 295# 296# Apart from a few lines right at the end, this file should consist 297# entirely of function definitions. 298# 299# This file is used both as a standalone script (via "sh ./MAKEDEV all" 300# or similar), and as a function library (via "MAKEDEV_AS_LIBRARY=1 . 301# MAKEDEV" from MAKEDEV.local). 302# 303 304usage() 305{ 306 cat 1>&2 << _USAGE_ 307Usage: ${0##*/} [-f] [-m mknod] [-s] special [...] 308 Create listed special devices. Options: 309 -f Force permissions to be updated on existing devices. 310 -m mknod Name of mknod(8) program. [\$TOOL_MKNOD or mknod] 311 -s Generate mtree(8) specfile instead of creating devices. 312 313_USAGE_ 314 exit 1 315} 316 317# zeropad width number 318# display number with a zero (`0') padding of width digits. 319# 320zeropad() 321{ 322 case $(($1 - ${#2})) in 323 5) echo 00000$2;; 324 4) echo 0000$2;; 325 3) echo 000$2;; 326 2) echo 00$2;; 327 1) echo 0$2;; 328 0) echo $2;; 329 *) echo "$0: bad padding" 1>&2; exit 1;; 330 esac 331} 332 333# hexprint number 334# display (base10) number as hexadecimal 335# 336hexprint() 337{ 338 val="$(($1 + 0))" 339 hex= 340 set -- 0 1 2 3 4 5 6 7 8 9 a b c d e f 341 while [ "$val" -gt 0 ]; do 342 eval hex=\$$(($val % 16 + 1))\$hex 343 val="$(($val / 16))" 344 done 345 echo "${hex:-0}" 346} 347 348setup() 349{ 350 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/rescue 351 352 do_create_mfs=false 353 do_force=false 354 do_pax=false 355 do_redirect=false 356 do_specfile=false 357 opts= 358 while getopts Mfm:p:s ch; do 359 # Options that should not be passed through to 360 # MAKEDEV.local are not added to $opts. 361 case ${ch} in 362 M) 363 # "-M" sets do_create_mfs; 364 # "-M -M" also sets do_redirect 365 do_redirect=$do_create_mfs 366 do_create_mfs=true 367 ;; 368 f) do_force=true 369 opts="${opts} -f" 370 ;; 371 m) TOOL_MKNOD=${OPTARG} 372 opts="${opts} -m ${OPTARG}" 373 ;; 374 p) TOOL_PAX="${OPTARG}" 375 if ( echo "" | "${TOOL_PAX}" -w -M ); then 376 do_pax=true 377 else 378 warn "Ignored -p option:" \ 379 "${TOOL_PAX} is missing or broken" 380 fi 381 ;; 382 s) do_specfile=true 383 opts="${opts} -s" 384 ;; 385 *) usage ;; 386 esac 387 done 388 389 shift $((${OPTIND} - 1)) 390 [ $# -gt 0 ] || usage 391 392 MKNOD="${TOOL_MKNOD:-mknod} -F netbsd" 393 if $do_force; then 394 MKNOD="${MKNOD} -R" 395 else 396 MKNOD="${MKNOD} -r" 397 fi 398 399 u_root="%uid_root%" 400 u_uucp="%uid_uucp%" 401 g_kmem="%gid_kmem%" 402 g_ntpd="%gid_ntpd%" 403 g_operator="%gid_operator%" 404 g_wheel="%gid_wheel%" 405 dialin=0 406 dialout=524288 407 callunit=262144 408 409 # only allow read&write for owner by default 410 umask 077 411 412 # Check if we have fdesc mounted 413 if [ -d fd ]; then 414 case "$(df fd)" in 415 *fdesc*) nofdesc=false;; 416 *) nofdesc=true;; 417 esac 418 else 419 nofdesc=true 420 fi 421 422 if $do_pax && ! $do_specfile; then 423 do_specfile=true 424 opts="${opts} -s" 425 fi 426} 427 428# 429# functions available to create nodes: 430# 431# mkdev name [b|c] major minor [mode{=600} [gid{=0} [uid{=0}]]] 432# create device node `name' with the appropriate permissions 433# 434# lndev src target 435# create a symlink from src to target 436# 437# makedir dir mode 438# create directory with appropriate mode 439# 440 441mkdev() 442{ 443 if [ -n "$count_nodes" ]; then 444 count_nodes=$((count_nodes + 1)) 445 return 446 fi 447 if $do_specfile; then 448 case $2 in 449 b) type=block ;; 450 c) type=char ;; 451 esac 452 echo "./$1 type=${type} device=netbsd,$3,$4 mode=${5:-600} gid=${6:-$g_wheel} uid=${7:-$u_root}" 453 else 454 ${MKNOD} -m ${5:-600} -g \#${6:-$g_wheel} -u \#${7:-$u_root} $1 $2 $3 $4 455 fi 456} 457 458lndev() 459{ 460 if [ -n "$count_nodes" ]; then 461 count_nodes=$((count_nodes + 1)) 462 return 463 fi 464 if $do_specfile; then 465 echo "./$2 type=link link=$1 mode=0700 gid=$g_wheel uid=$u_root" 466 else 467 ln -f -s $1 $2 468 fi 469} 470 471makedir() 472{ 473 if [ -n "$count_nodes" ]; then 474 count_nodes=$((count_nodes + 1)) 475 return 476 fi 477 if $do_specfile; then 478 echo "./$1 type=dir mode=$2 gid=$g_wheel uid=$u_root" 479 else 480 mkdir $1 2>/dev/null 481 chmod $2 $1 482 fi 483} 484 485warn() 486{ 487 echo 1>&2 "$0: $*" 488} 489 490# wrap_makedev makedev ... 491wrap_makedev() 492{ 493 if $do_specfile; then 494 # "optional" tells pax(1) not to create the directory itself. 495 echo ". type=dir optional" 496 fi 497 eval "$@" 498} 499 500# makedev special [...] 501# the main loop 502# 503makedev() 504{ 505 506for i 507do 508 509case $i in 510 511%MD_DEVICES% 512 513all) 514 makedev all_md 515 makedev std fd ptm pty0 pty1 pty2 pty3 516 makedev ccd0 ccd1 ccd2 ccd3 517 makedev cgd0 cgd1 cgd2 cgd3 518 makedev fss0 fss1 fss2 fss3 519 makedev md0 md1 520 makedev raid0 raid1 raid2 raid3 raid4 raid5 raid6 raid7 521 makedev vnd0 vnd1 vnd2 vnd3 522 makedev bpf 523 makedev tun0 tun1 tun2 tun3 524 makedev ipl pf crypto random systrace 525 makedev lkm lockstat clockctl cpuctl 526 makedev atabus0 atabus1 atabus2 atabus3 527 makedev tap tap0 tap1 tap2 tap3 528 makedev gpio gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7 529 makedev bthub 530 makedev cfs 531 makedev puffs 532 makedev local # do this last 533 ;; 534 535init) 536 # unless overridden by MD entry, this is equal to 'all' 537 makedev all 538 ;; 539 540%MI_DEVICES_BEGIN% 541audio) 542 makedev audio0 audio1 audio2 audio3 543 lndev sound0 sound 544 lndev audio0 audio 545 lndev mixer0 mixer 546 lndev audioctl0 audioctl 547 ;; 548 549gpio) 550 makedev gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7 551 lndev gpio0 gpio 552 ;; 553 554radio) 555 makedev radio0 radio1 556 lndev radio0 radio 557 ;; 558 559ramdisk) 560 makedev floppy md0 561 ;; 562 563usbs) 564 makedev usb usb0 usb1 usb2 usb3 usb4 usb5 usb6 usb7 565 makedev uhid0 uhid1 uhid2 uhid3 566 makedev ulpt0 ulpt1 567 makedev ttyU0 ttyU1 568 makedev ttyY0 ttyY1 569 makedev urio0 570 makedev uscanner0 uscanner1 571 makedev utoppy0 utoppy1 572 makedev ugen0 573 ;; 574 575isdns) 576 makedev isdn isdnctl isdnbchan0 isdnbchan1 isdntel0 isdntel1 isdnteld0 isdnteld1 isdntrc0 isdntrc1 577 ;; 578 579std) 580 mkdev console c %cons_chr% 0 600 581 mkdev constty c %cons_chr% 1 600 582 mkdev drum c %swap_chr% 0 640 $g_kmem 583 mkdev kmem c %mem_chr% 1 640 $g_kmem 584 mkdev mem c %mem_chr% 0 640 $g_kmem 585 mkdev null c %mem_chr% 2 666 586 mkdev zero c %mem_chr% 12 666 587 mkdev klog c %log_chr% 0 600 588 mkdev ksyms c %ksyms_chr% 0 444 589 if $nofdesc; then 590 mkdev tty c %ctty_chr% 0 666 591 mkdev stdin c %filedesc_chr% 0 666 592 mkdev stdout c %filedesc_chr% 1 666 593 mkdev stderr c %filedesc_chr% 2 666 594 fi 595 ;; 596 597usb) 598 mkdev usb c %usb_chr% 255 444 599 ;; 600 601usb*) 602 unit=${i#usb} 603 usb=usb$unit 604 mkdev usb$unit c %usb_chr% $unit 605 ;; 606 607uhid*) 608 unit=${i#uhid} 609 mkdev uhid$unit c %uhid_chr% $unit 666 610 ;; 611 612ulpt*) 613 unit=${i#ulpt} 614 mkdev ulpt$unit c %ulpt_chr% $unit 615 mkdev ulpn$unit c %ulpt_chr% $(($unit + 64)) 616 ;; 617 618urio*) 619 unit=${i#urio} 620 mkdev urio$unit c %urio_chr% $unit 666 621 ;; 622 623uscanner*) 624 unit=${i#uscanner} 625 mkdev uscanner$unit c %uscanner_chr% $unit 626 ;; 627 628utoppy*) 629 unit=${i#utoppy} 630 mkdev utoppy$unit c %utoppy_chr% $unit 631 ;; 632 633ttyY*) 634 unit=${i#ttyY} 635 mkdev ttyY$unit c %ucycom_chr% $(($unit + $dialin )) "" "" $u_uucp 636 mkdev dtyY$unit c %ucycom_chr% $(($unit + $dialout )) "" "" $u_uucp 637 mkdev ctyY$unit c %ucycom_chr% $(($unit + $callunit)) "" "" $u_uucp 638 ;; 639 640ttyU*) 641 unit=${i#ttyU} 642 mkdev ttyU$unit c %ucom_chr% $(($unit + $dialin )) "" "" $u_uucp 643 mkdev dtyU$unit c %ucom_chr% $(($unit + $dialout )) "" "" $u_uucp 644 mkdev ctyU$unit c %ucom_chr% $(($unit + $callunit)) "" "" $u_uucp 645 ;; 646 647ugen*) 648 unit=${i#ugen} 649 for j in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 650 do 651 mkdev ugen$unit.$j c %ugen_chr% $(($unit * 16 + ${j#0})) 652 done 653 ;; 654 655wscons) 656 makedev ttyE0 ttyE1 ttyE2 ttyE3 ttyE4 ttyE5 ttyE6 ttyE7 657 makedev wsmouse0 wsmouse1 wsmouse2 wsmouse3 658 makedev wskbd0 wskbd1 wskbd2 wskbd3 659 makedev wsmux0 wsmux1 wsmux2 wsmux3 660 makedev wsmouse wskbd 661 makedev ttyEcfg ttyEstat 662 makedev wsfont 663 ;; 664 665wsmouse) 666 mkdev wsmouse c %wsmux_chr% 0 667 ;; 668 669wskbd) 670 mkdev wskbd c %wsmux_chr% 1 671 ;; 672 673wsmux*) 674 unit=${i#wsmux} 675 mkdev wsmux$unit c %wsmux_chr% $unit 676 mkdev wsmuxctl$unit c %wsmux_chr% $(($unit + 128)) 200 677 ;; 678 679xenevt) 680 mkdev xenevt c %xenevt_chr% 0 681 ;; 682 683xsd_kva) 684 mkdev xsd_kva c %xenevt_chr% 1 685 ;; 686 687xencons) 688 mkdev xencons c %xencons_chr% 0 689 ;; 690 691ttyEstat) 692 mkdev ttyEstat c %wsdisplay_chr% 254 693 ;; 694 695ttyEcfg) 696 mkdev ttyEcfg c %wsdisplay_chr% 255 697 ;; 698 699ttyE*) 700 unit=${i#ttyE} 701 mkdev ttyE$unit c %wsdisplay_chr% $unit 702 ;; 703 704wsmouse*) 705 unit=${i#wsmouse} 706 mkdev wsmouse$unit c %wsmouse_chr% $unit 707 ;; 708 709wskbd*) 710 unit=${i#wskbd} 711 mkdev wskbd$unit c %wskbd_chr% $unit 712 ;; 713 714fd) 715 if $nofdesc; then 716 makedir fd 755 717 n=0 718 while [ $n -lt 64 ] 719 do 720 mkdev fd/$n c %filedesc_chr% $n 666 721 n=$(($n + 1)) 722 done 723 fi 724 ;; 725 726wt*) 727 case $i in 728 wt*) name=wt; unit=${i#wt}; chr=%wt_chr%; blk=%wt_blk%;; 729 esac 730 for sub in $unit $(($unit+8)) $(($unit+16)) 731 do 732 mkdev $name$sub b $blk $(($sub + 0)) 660 $g_operator 733 mkdev n$name$sub b $blk $(($sub + 4)) 660 $g_operator 734 mkdev r$name$sub c $chr $(($sub + 0)) 660 $g_operator 735 mkdev nr$name$sub c $chr $(($sub + 4)) 660 $g_operator 736 done 737 ;; 738 739md*) 740 makedisk_minimal md ${i#md} %md_blk% %md_chr% 741 ;; 742 743fss*) 744 case $i in 745 fss*) name=fss; unit=${i#fss}; blk=%fss_blk%; chr=%fss_chr% 746 esac 747 mkdev $name$unit b $blk $unit 660 $g_operator 748 mkdev r$name$unit c $chr $unit 660 $g_operator 749 ;; 750 751ss*) 752 case $i in 753 ss*) name=ss; unit=${i#ss}; chr=%ss_chr%;; 754 esac 755 mkdev $name$unit c $chr $(($unit * 16 + 0)) 640 $g_operator 756 mkdev n$name$unit c $chr $(($unit * 16 + 1)) 640 $g_operator 757 mkdev en$name$unit c $chr $(($unit * 16 + 3)) 640 $g_operator 758 ;; 759 760ccd*|cgd*|raid*|vnd*) 761 case $i in 762 ccd*) name=ccd; unit=${i#ccd}; blk=%ccd_blk%; chr=%ccd_chr%;; 763 cgd*) name=cgd; unit=${i#cgd}; blk=%cgd_blk%; chr=%cgd_chr%;; 764 raid*) name=raid; unit=${i#raid}; blk=%raid_blk%; chr=%raid_chr%;; 765 vnd*) name=vnd; unit=${i#vnd}; blk=%vnd_blk%; chr=%vnd_chr%;; 766 esac 767 %MKDISK% $name $unit $blk $chr 768 ;; 769 770sd*) 771 name=sd; unit=${i#sd}; blk=%sd_blk%; chr=%sd_chr% 772 %MKDISK% $name $unit $blk $chr 773 ;; 774 775wd*) 776 name=wd; unit=${i#wd}; blk=%wd_blk%; chr=%wd_chr% 777 %MKDISK% $name $unit $blk $chr 778 ;; 779 780fd*) 781 name=fd; unit=${i#fd}; blk=%fd_blk%; chr=%fd_chr% 782 %MKDISK% $name $unit $blk $chr 783 ;; 784 785ld*) 786 name=ld; unit=${i#ld}; blk=%ld_blk%; chr=%ld_chr% 787 %MKDISK% $name $unit $blk $chr 788 ;; 789 790bio) 791 mkdev bio c %bio_chr% 0 792 ;; 793 794ed*) 795 name=ed; unit=${i#ed}; blk=%ed_blk%; chr=%ed_chr% 796 %MKDISK% $name $unit $blk $chr 797 ;; 798 799ofdisk*) 800 name=ofdisk; unit=${i#ofdisk}; blk=%ofdisk_blk%; chr=%ofdisk_chr% 801 %MKDISK% $name $unit $blk $chr 802 ;; 803 804xbd*) 805 name=xbd; unit=${i#xbd}; blk=%xbd_blk%; chr=%xbd_chr% 806 %MKDISK% $name $unit $blk $chr 807 ;; 808 809dk*) 810 name=dk; unit=${i#dk}; blk=%dk_blk%; chr=%dk_chr% 811 minor=0 812 while [ $minor -le ${i#dk} ] 813 do 814 mkdev r$name$minor c $chr $minor 0640 $g_operator 815 mkdev $name$minor b $blk $minor 0640 $g_operator 816 minor=$(($minor + 1)) 817 done 818 ;; 819 820ttyCY*) 821 name=tyCY; chr=%cy_chr%; off=32 822 unit=${i#t${name}} 823 minor=$(($unit * $off)) 824 eminor=$(($minor + $off)) 825 while [ $minor -lt $eminor ] 826 do 827 nminor=000$minor 828 nminor=${nminor#${nminor%???}} 829 mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp 830 mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp 831 minor=$(($minor + 1)) 832 done 833 ;; 834 835ttyCZ*) 836 name=tyCZ; chr=%cz_chr%; off=64 837 unit=${i#t${name}} 838 minor=$(($unit * $off)) 839 eminor=$(($minor + $off)) 840 while [ $minor -lt $eminor ] 841 do 842 nminor=0000$minor 843 nminor=${nminor#${nminor%????}} 844 mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp 845 mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp 846 minor=$(($minor + 1)) 847 done 848 ;; 849 850 851tty[0-9]|tty0[0-9]) 852 # some archs have built-in zstty (major %zstty_chr%) instead 853 # of NS16550; create ttyZ* and hardlink as [dt]ty0*; this 854 # needs to be before com entry, for archs which have both 855 unit=${i#tty} 856 unit=$(($unit + 0)) 857 makedev ttyZ${unit} 858 lndev ttyZ$unit tty0${unit} 859 lndev dtyZ$unit dty0${unit} 860 ;; 861 862tty0*|tty1*|tty[0-9]) 863 unit=${i#tty} 864 ounit=00$unit 865 ounit=${ounit#${ounit%??}} 866 mkdev tty$ounit c %com_chr% $(($unit + $dialin )) "" "" $u_uucp 867 mkdev dty$ounit c %com_chr% $(($unit + $dialout)) "" "" $u_uucp 868 ;; 869 870ttyC*) 871 # some archs call com_chr ttyC traditionally 872 unit=${i#ttyC}; name=ttyC; dname=dtyC; chr=%com_chr% 873 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 874 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 875 ;; 876 877ttyh*) 878 unit=${i#ttyh}; name=ttyh; dname=dtyh; chr=%sabtty_chr% 879 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 880 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 881 ;; 882 883ttyTX*) 884 unit=${i#ttyTX}; name=ttyTX0; dname=dtyTX0; chr=%txcom_chr% 885 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 886 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 887 ;; 888 889ttyZ*) 890 unit=${i#ttyZ}; name=ttyZ; dname=dtyZ; chr=%zstty_chr% 891 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 892 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 893 ;; 894 895opty) 896 for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f 897 do 898 case $j in 899 [0-9]) jn=$j ;; 900 a) jn=10 ;; 901 b) jn=11 ;; 902 c) jn=12 ;; 903 d) jn=13 ;; 904 e) jn=14 ;; 905 f) jn=15 ;; 906 esac 907 mkdev ttyp$j c %pts_chr% $jn 666 908 mkdev ptyp$j c %ptc_chr% $jn 666 909 done 910 ;; 911 912pty*) 913 class=${i#pty} 914 d1="p q r s t u v w x y z P Q R S T" 915 if [ "$class" -ge 64 ] 916 then 917 warn "$i: pty unit must be between 0 and 63" 918 continue 919 elif [ "$class" -lt 16 ] 920 then 921 offset=0 922 mult=0 923 d2="0 1 2 3 4 5 6 7 8 9 a b c d e f" 924 else 925 class=$(($class - 16)) 926 offset=256 927 mult=2 928 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" 929 fi 930 start=$(($class * 16)) 931 set -- $d2 932 nt=$# 933 s1=$(($start / $nt)) 934 set -- $d1 935 shift $s1 936 t1=$1 937 if [ "$t1" = v ]; then 938 warn "$i: pty unit conflicts with console ttyv0 device" 939 continue 940 fi 941 s2=$(($start % ($nt - $s1 * $mult))) 942 set -- $d2 943 shift $s2 944 t2=$1 945 unit=$(($start + $offset - $s1 * $mult)) 946 end=$(($unit + 16)) 947 while [ "$unit" -lt "$end" ] 948 do 949 mkdev tty$t1$t2 c %pts_chr% $unit 666 950 mkdev pty$t1$t2 c %ptc_chr% $unit 666 951 shift 952 t2=$1 953 if [ -z "$t2" ] 954 then 955 break 956 fi 957 unit=$(($unit + 1)) 958 done 959 ;; 960 961stic*) 962 unit=${i#stic} 963 mkdev stic$unit c %stic_chr% $unit 964 ;; 965 966st*) 967 case $i in 968 st*) name=st; unit=${i#st}; chr=%st_chr%; blk=%st_blk%;; 969 esac 970 mkdev $name$unit b $blk $(($unit * 16 + 0)) 660 $g_operator 971 mkdev n$name$unit b $blk $(($unit * 16 + 1)) 660 $g_operator 972 mkdev e$name$unit b $blk $(($unit * 16 + 2)) 660 $g_operator 973 mkdev en$name$unit b $blk $(($unit * 16 + 3)) 660 $g_operator 974 mkdev r$name$unit c $chr $(($unit * 16 + 0)) 660 $g_operator 975 mkdev nr$name$unit c $chr $(($unit * 16 + 1)) 660 $g_operator 976 mkdev er$name$unit c $chr $(($unit * 16 + 2)) 660 $g_operator 977 mkdev enr$name$unit c $chr $(($unit * 16 + 3)) 660 $g_operator 978 ;; 979 980ses*|ch*|uk*) 981 case $i in 982 ch*) name=ch; unit=${i#ch}; chr=%ch_chr%;; 983 uk*) name=uk; unit=${i#uk}; chr=%uk_chr%;; 984 ses*) name=ses; unit=${i#ses}; chr=%ses_chr%;; 985 esac 986 mkdev $name$unit c $chr $unit 640 $g_operator 987 ;; 988 989cd*) 990 makedisk_minimal cd ${i#cd} %cd_blk% %cd_chr% % 991 ;; 992 993mcd*) 994 makedisk_minimal mcd ${i#mcd} %mcd_blk% %mcd_chr% 995 ;; 996 997gdrom*) 998 makedisk_minimal gdrom ${i#gdrom} %gdrom_blk% %gdrom_chr% 999 ;; 1000 1001lpt*|lpa*) 1002 case $i in 1003 lpt*) name=lpt; unit=${i#lpt}; chr=%lpt_chr%; flags=0;; 1004 lpa*) name=lpa; unit=${i#lpa}; chr=%lpt_chr%; flags=128;; 1005 esac 1006 mkdev $name$unit c $chr $(($unit + $flags)) 1007 mkdev lpt${unit}ctl c $chr $(($unit + 256)) 1008 ;; 1009 1010bpf) 1011 mkdev bpf c %bpf_chr% 0 1012 lndev bpf bpf0 1013 ;; 1014 1015bthub) 1016 mkdev bthub c %bthub_chr% 0 1017 ;; 1018 1019tun*) 1020 unit=${i#tun} 1021 mkdev tun$unit c %tun_chr% $unit 1022 ;; 1023 1024joy*) 1025 unit=${i#joy} 1026 mkdev joy$unit c %joy_chr% $unit 1027 ;; 1028 1029ipl) 1030 mkdev ipl c %ipl_chr% 0 1031 mkdev ipnat c %ipl_chr% 1 1032 mkdev ipstate c %ipl_chr% 2 1033 mkdev ipauth c %ipl_chr% 3 1034 mkdev ipsync c %ipl_chr% 4 1035 mkdev ipscan c %ipl_chr% 5 1036 mkdev iplookup c %ipl_chr% 6 1037 ;; 1038 1039pf) 1040 mkdev pf c %pf_chr% 0 1041 ;; 1042 1043crypto) 1044 mkdev crypto c %crypto_chr% 0 666 1045 ;; 1046 1047cmos) 1048 mkdev cmos c %cmos_chr% 0 644 1049 ;; 1050 1051speaker) 1052 mkdev speaker c %spkr_chr% 0 1053 ;; 1054 1055lkm) 1056 mkdev lkm c %lkm_chr% 0 640 $g_kmem 1057 ;; 1058 1059lockstat) 1060 mkdev lockstat c %lockstat_chr% 0 1061 ;; 1062 1063cpuctl) 1064 mkdev cpuctl c %cpuctl_chr% 0 666 1065 ;; 1066 1067audio*) 1068 unit=${i#audio} 1069 audio=audio$unit 1070 sound=sound$unit 1071 mixer=mixer$unit 1072 audioctl=audioctl$unit 1073 : ${unit:-0} 1074 mkdev $sound c %audio_chr% $(($unit + 0)) 666 1075 mkdev $audio c %audio_chr% $(($unit + 128)) 666 1076 mkdev $mixer c %audio_chr% $(($unit + 16)) 666 1077 mkdev $audioctl c %audio_chr% $(($unit + 192)) 666 1078 ;; 1079 1080gpio*) 1081 unit=${i#gpio} 1082 mkdev gpio$unit c %gpio_chr% $unit 644 1083 ;; 1084 1085rmidi*) 1086 unit=${i#rmidi} 1087 mkdev rmidi$unit c %midi_chr% $unit 666 1088 ;; 1089 1090music*) 1091 unit=${i#music} 1092 : ${unit:-0} 1093 mkdev music$unit c %sequencer_chr% $(($unit + 0)) 666 1094 mkdev sequencer$unit c %sequencer_chr% $(($unit + 128)) 666 1095 ;; 1096 1097radio*) 1098 unit=${i#radio} 1099 : ${unit:-0} 1100 mkdev radio$unit c %radio_chr% $unit 666 1101 ;; 1102 1103amr*) 1104 unit=${i#amr} 1105 mkdev amr$unit c %amr_chr% $unit 1106 ;; 1107 1108apm) 1109 mkdev apm c %apm_chr% 0 644 1110 mkdev apmctl c %apm_chr% 8 644 1111 ;; 1112 1113apm) 1114 # hpcmips uses `apmdev_chr' instead of `apm_chr' 1115 mkdev apm c %apmdev_chr% 0 644 1116 mkdev apmctl c %apmdev_chr% 8 644 1117 ;; 1118 1119satlink*) 1120 unit=${i#satlink} 1121 mkdev satlink$unit c %satlink_chr% $unit 444 1122 ;; 1123 1124random) 1125 mkdev random c %rnd_chr% 0 444 1126 mkdev urandom c %rnd_chr% 1 644 1127 ;; 1128 1129cfs) 1130 makedev cfs0 1131 ;; 1132 1133cfs*) 1134 unit=${i#cfs} 1135 mkdev cfs$unit c %vcoda_chr% $unit 1136 ;; 1137 1138sysmon) 1139 mkdev sysmon c %sysmon_chr% 0 644 1140 mkdev watchdog c %sysmon_chr% 1 644 1141 mkdev power c %sysmon_chr% 2 640 1142 ;; 1143 1144scsibus*) 1145 unit=${i#scsibus} 1146 mkdev scsibus$unit c %scsibus_chr% $unit 644 1147 ;; 1148 1149bktr) 1150 makedev bktr0 bktr1 1151 lndev bktr0 bktr 1152 lndev tuner0 tuner 1153 lndev vbi0 vbi 1154 ;; 1155 1156bktr*) 1157 unit=${i#bktr} 1158 mkdev bktr$unit c %bktr_chr% $(($unit + 0)) 444 1159 mkdev tuner$unit c %bktr_chr% $(($unit + 16)) 444 1160 mkdev vbi$unit c %bktr_chr% $(($unit + 32)) 444 1161 ;; 1162 1163io) 1164 mkdev io c %mem_chr% 14 600 1165 ;; 1166 1167iop*) 1168 unit=${i#iop} 1169 mkdev iop$unit c %iop_chr% $unit 1170 ;; 1171 1172mlx*) 1173 unit=${i#mlx} 1174 mkdev mlx$unit c %mlx_chr% $unit 1175 ;; 1176 1177mly*) 1178 unit=${i#mly} 1179 mkdev mly$unit c %mly_chr% $unit 1180 ;; 1181 1182twa*) 1183 unit=${i#twa} 1184 mkdev twa$unit c %twa_chr% $unit 1185 ;; 1186 1187twe*) 1188 unit=${i#twe} 1189 mkdev twe$unit c %twe_chr% $unit 1190 ;; 1191 1192icp*) 1193 unit=${i#icp} 1194 mkdev icp$unit c %icp_chr% $unit 1195 ;; 1196 1197agp*) 1198 unit=${i#agp} 1199 mkdev agp$unit c %agp_chr% $unit 644 1200 if [ "$unit" = "0" ]; then 1201 lndev agp$unit agpgart 1202 fi 1203 ;; 1204 1205pci*) 1206 unit=${i#pci} 1207 mkdev pci$unit c %pci_chr% $unit 644 1208 ;; 1209 1210dpti*) 1211 unit=${i#dpti} 1212 mkdev dpti$unit c %dpti_chr% $unit 1213 ;; 1214 1215dpt*) 1216 unit=${i#dpt} 1217 mkdev dpt$unit c %dpt_chr% $unit 1218 ;; 1219 1220altq) 1221 makedir altq 755 1222 unit=0 1223 for dev in altq cbq wfq afm fifoq red rio localq hfsc cdnr blue priq 1224 do 1225 mkdev altq/$dev c %altq_chr% $unit 644 1226 unit=$(($unit + 1)) 1227 done 1228 ;; 1229 1230isdn) 1231 mkdev isdn c %isdn_chr% 0 1232 ;; 1233 1234isdnctl) 1235 mkdev isdnctl c %isdnctl_chr% 0 1236 ;; 1237 1238isdnbchan*) 1239 unit=${i#isdnbchan} 1240 mkdev isdnbchan$unit c %isdnbchan_chr% $unit 1241 ;; 1242 1243isdnteld*) 1244 unit=${i#isdnteld} 1245 mkdev isdnteld$unit c %isdntel_chr% $(($unit + 64)) 1246 ;; 1247 1248isdntel*) 1249 unit=${i#isdntel} 1250 mkdev isdntel$unit c %isdntel_chr% $unit 1251 ;; 1252 1253isdntrc*) 1254 unit=${i#isdntrc} 1255 mkdev isdntrc$unit c %isdntrc_chr% $unit 1256 ;; 1257 1258vmegen) 1259 makedev vmegen0 vmegen1 vmegen2 vmegen3 1260 ;; 1261 1262vmegen*) 1263 unit=${i#vmegen} 1264 mkdev vmegen$unit c %vmegeneric_chr% $(($unit * 16 + 0)) 1265 ;; 1266 1267wsfont) 1268 mkdev wsfont c %wsfont_chr% 0 1269 ;; 1270 1271cir*) 1272 unit=${i#cir} 1273 mkdev cir$unit c %cir_chr% $unit 666 1274 ;; 1275 1276irframe*) 1277 unit=${i#irframe} 1278 mkdev irframe$unit c %irframe_chr% $unit 1279 ;; 1280 1281fcom*) 1282 unit=${i#fcom} 1283 mkdev fcom$unit c %fcom_chr% $unit "" "" $u_uucp 1284 ;; 1285 1286openfirm) 1287 mkdev openfirm c %openfirm_chr% 0 444 1288 ;; 1289 1290nvram) 1291 mkdev nvram c %nvram_chr% 0 644 1292 ;; 1293 1294rtc) 1295 mkdev rtc c %rtc_chr% 0 644 1296 ;; 1297 1298clockctl) 1299 mkdev clockctl c %clockctl_chr% 0 660 $g_ntpd 1300 ;; 1301 1302nsmb) 1303 makedev nsmb0 nsmb1 nsmb2 nsmb3 1304 ;; 1305 1306nsmb*) 1307 unit=${i#nsmb} 1308 mkdev nsmb$unit c %nsmb_chr% $unit 644 1309 ;; 1310 1311systrace) 1312 mkdev systrace c %systrace_chr% 0 644 1313 ;; 1314 1315kttcp) 1316 mkdev kttcp c %kttcp_chr% 0 1317 ;; 1318 1319dmoverio) 1320 mkdev dmoverio c %dmoverio_chr% 0 644 1321 ;; 1322 1323veriexec) 1324 mkdev veriexec c %veriexec_chr% 0 600 1325 ;; 1326 1327ttyv*) 1328 unit=${i#ttyv} 1329 mkdev ttyv$unit c %pc_chr% $unit 1330 ;; 1331 1332# arm, acorn32 1333ttyv*) 1334 unit=${i#ttyv} 1335 mkdev ttyv$unit c %physcon_chr% $unit 1336 ;; 1337 1338arcpp*) 1339 unit=${i#arcpp} 1340 mkdev arcpp$unit c %arcpp_chr% $unit 1341 ;; 1342 1343par*) 1344 unit=${i#par} 1345 case $unit in 1346 0) 1347 mkdev par$unit c %par_chr% $unit 1348 ;; 1349 *) 1350 warn "bad unit for par in: $i" 1351 ;; 1352 esac 1353 ;; 1354 1355ite*|ttye*) 1356 case $i in 1357 ite*) unit=${i#ite};; 1358 ttye*) unit=${i#ttye};; 1359 esac 1360 mkdev ttye$unit c %ite_chr% $unit 1361 ;; 1362 1363pms*) 1364 unit=${i#pms} 1365 mkdev pms$unit c %opms_chr% $unit 1366 ;; 1367 1368qms*) 1369 unit=${i#qms} 1370 mkdev qms$unit c %qms_chr% $unit 1371 ;; 1372 1373lms*) 1374 unit=${i#lms} 1375 mkdev lms$unit c %lms_chr% $unit 1376 ;; 1377 1378mms*) 1379 unit=${i#mms} 1380 mkdev mms$unit c %mms_chr% $unit 1381 ;; 1382 1383mouse-*) 1384 case $i in 1385 mouse-pms*) name=pms ;; 1386 mouse-qms*) name=qms ;; 1387 esac 1388 unit=${i#mouse-${name}} 1389 lndev $name$unit mouse 1390 ;; 1391 1392kbd) 1393 mkdev kbd c %kbd_chr% 0 1394 ;; 1395 1396kbdctl) 1397 mkdev kbdctl c %kbd_chr% 1 1398 ;; 1399 1400vidcconsole0) 1401 mkdev vidcconsole0 c %vidcconsole_chr% 0 640 1402 ;; 1403 1404view*) 1405 unit=${i#view} 1406 mkdev view$unit c %view_chr% $unit 666 1407 ;; 1408 1409mouse*) 1410 unit=${i#mouse} 1411 case $unit in 1412 0|1) 1413 mkdev mouse$unit c %ms_chr% $unit 666 1414 if [ $unit = 0 ]; then 1415 lndev mouse$unit mouse 1416 fi 1417 ;; 1418 *) 1419 warn "bad unit for mouse in: $i" 1420 ;; 1421 esac 1422 ;; 1423 1424panel) 1425 mkdev panel0 c %panel_chr% 0 660 1426 ;; 1427 1428tslcd) 1429 mkdev tslcd0 c %tslcd_chr% 0 660 1430 ;; 1431 1432ipty) 1433 mkdev ttyp0 c %pts_chr% 0 666 1434 mkdev ttyp1 c %pts_chr% 1 666 1435 mkdev ptyp0 c %ptc_chr% 0 666 1436 mkdev ptyp1 c %ptc_chr% 1 666 1437 ;; 1438 1439ptm) 1440 mkdev ptmx c %ptm_chr% 0 666 1441 mkdev ptm c %ptm_chr% 1 666 1442 ;; 1443 1444grf*) 1445 unit=${i#grf} 1446 mkdev grf$unit c %grf_chr% $unit 666 1447 ;; 1448 1449etvme) 1450 mkdev etvme c %et_chr% 0 1451 ;; 1452 1453leo*) 1454 unit=${i#leo} 1455 mkdev leo$unit c %leo_chr% $unit 1456 ;; 1457 1458scif*) 1459 unit=${i#scif} 1460 mkdev scif$unit c %scif_chr% $unit "" "" $u_uucp 1461 ;; 1462 1463sci*) 1464 unit=${i#sci} 1465 mkdev sci$unit c %sci_chr% $unit "" "" $u_uucp 1466 ;; 1467 1468maple*) 1469 case $i in 1470 mapleA*) name="mapleA"; unit=0;; 1471 mapleB*) name="mapleB"; unit=1;; 1472 mapleC*) name="mapleC"; unit=2;; 1473 mapleD*) name="mapleD"; unit=3;; 1474 esac 1475 subunit=${i#$name} 1476 mkdev $name$subunit c %maple_chr% $(($unit * 8 + 0$subunit)) 1477 ;; 1478 1479mmem*) 1480 unit=${i#mmem} 1481 for pt in 0 # 1 2 3 4 ... 255 1482 do 1483# mkdev mmem${unit}.${pt}a b %mmem_blk% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator 1484 mkdev mmem${unit}.${pt}c b %mmem_blk% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator 1485# mkdev rmmem${unit}.${pt}a c %mmem_chr% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator 1486 mkdev rmmem${unit}.${pt}c c %mmem_chr% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator 1487 done 1488 ;; 1489 1490mlcd*) 1491 unit=${i#mlcd} 1492 for pt in 0 # 1 2 3 4 ... 255 1493 do 1494 mkdev mlcd${unit}.${pt} c %mlcd_chr% $(($unit * 256 + $pt)) 640 $g_operator 1495 done 1496 ;; 1497 1498ixpcom*) 1499 unit=${i#ixpcom} 1500 mkdev ixpcom$unit c %ixpcom_chr% $unit "" "" $u_uucp 1501 ;; 1502 1503epcom*) 1504 unit=${i#epcom} 1505 mkdev epcom$unit c %epcom_chr% $unit "" "" $u_uucp 1506 ;; 1507 1508ucbsnd) 1509 mkdev ucbsnd c %ucbsnd_chr% 0 666 1510 ;; 1511 1512adb) 1513 mkdev adb c %aed_chr% 0 666 1514 ;; 1515 1516asc*) 1517 unit=${i#asc} 1518 mkdev asc$unit c %asc_chr% $unit 666 1519 ;; 1520 1521bwtwo*) 1522 unit=${i#bwtwo} 1523 mkdev bwtwo$unit c %bwtwo_chr% $unit 666 1524 ;; 1525 1526cgtwo*) 1527 unit=${i#cgtwo} 1528 mkdev cgtwo$unit c %cgtwo_chr% $unit 666 1529 ;; 1530 1531cgthree*) 1532 unit=${i#cgthree} 1533 mkdev cgthree$unit c %cgthree_chr% $unit 666 1534 ;; 1535 1536cgfour*) 1537 unit=${i#cgfour} 1538 mkdev cgfour$unit c %cgfour_chr% $unit 666 1539 ;; 1540 1541cgsix*) 1542 unit=${i#cgsix} 1543 mkdev cgsix$unit c %cgsix_chr% $unit 666 1544 ;; 1545 1546cgeight*) 1547 unit=${i#cgeight} 1548 mkdev cgeight$unit c %cgeight_chr% $unit 666 1549 ;; 1550 1551tcx*) 1552 unit=${i#tcx} 1553 mkdev tcx$unit c %tcx_chr% $unit 666 1554 ;; 1555 1556xd*|xy*) 1557 case $i in 1558 xd*) name=xd; unit=${i#xd}; blk=%xd_blk%; chr=%xd_chr%;; 1559 xy*) name=xy; unit=${i#xy}; blk=%xy_blk%; chr=%xy_chr%;; 1560 esac 1561 %MKDISK% $name $unit $blk $chr 1562 ;; 1563 1564magma*) 1565 unit=${i#magma} 1566 if [ 0$unit -gt 3 ]; then 1567 warn "bad unit for $i: $unit" 1568 break 1569 fi 1570 for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f 1571 do 1572 case $j in 1573 [0-9]) jn=$j ;; 1574 a) jn=10 ;; 1575 b) jn=11 ;; 1576 c) jn=12 ;; 1577 d) jn=13 ;; 1578 e) jn=14 ;; 1579 f) jn=15 ;; 1580 esac 1581 mkdev tty$unit$j c %mtty_chr% $(($unit * 64 + $jn)) 1582 done 1583 mkdev bpp${unit}0 c %mbpp_chr% $(($unit * 64 + 0)) 1584 mkdev bpp${unit}1 c %mbpp_chr% $(($unit * 64 + 1)) 1585 ;; 1586 1587clcd*) 1588 unit=${i#clcd} 1589 if [ 0$unit -gt 7 ]; then 1590 warn "bad unit for $i: $unit" 1591 break 1592 fi 1593 for j in 0 1 2 3 4 5 6 7 1594 do 1595 mkdev ttyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialin)) "" "" $u_uucp 1596 mkdev dtyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialout)) "" "" $u_uucp 1597 done 1598 ;; 1599 1600spif*) 1601 unit=${i#spif} 1602 if [ 0$unit -gt 3 ]; then 1603 warn "bad unit for $i: $unit" 1604 break 1605 fi 1606 for j in 0 1 2 3 4 5 6 7; do 1607 mkdev ttyS$unit$j c 102 $(($unit * 64 + $j)) "" "" $u_uucp 1608 done 1609 mkdev bppS${unit}0 c 103 $(($unit * 64 + 0)) 1610 mkdev bppS${unit}1 c 103 $(($unit * 64 + 1)) 1611 ;; 1612 1613bpp*) 1614 unit=${i#bpp} 1615 mkdev bpp$unit c %bpp_chr% $(($unit + 0)) 1616 ;; 1617 1618tctrl*) 1619 unit=${i#tctrl} 1620 mkdev tctrl$unit c %tctrl_chr% $unit 666 1621 ;; 1622 1623bmd*) 1624 unit=${i#bmd} 1625 mkdev bmd${unit}a b %bmd_blk% $(($unit * 8 + 0)) 640 $g_operator 1626 mkdev bmd${unit}c b %bmd_blk% $(($unit * 8 + 2)) 640 $g_operator 1627 mkdev rbmd${unit}a c %bmd_chr% $(($unit * 8 + 0)) 640 $g_operator 1628 mkdev rbmd${unit}c c %bmd_chr% $(($unit * 8 + 2)) 640 $g_operator 1629 ;; 1630 1631sram) 1632 mkdev sram c %sram_chr% 0 644 1633 ;; 1634 1635pow*) 1636 unit=${i#pow} 1637 case $unit in 1638 0|1) 1639 mkdev pow${unit} c %pow_chr% ${unit} 644 1640 if [ $unit = 0 ]; then 1641 lndev pow${unit} pow 1642 fi 1643 ;; 1644 *) 1645 warn "bad unit for pow in: $i" 1646 ;; 1647 esac 1648 ;; 1649 1650ttyS*) 1651 unit=${i#ttyS} 1652 mkdev ttyS$unit c %sacom_chr% $(($unit + $dialin )) "" "" $u_uucp 1653 mkdev dtyS$unit c %sacom_chr% $(($unit + $dialout)) "" "" $u_uucp 1654 ;; 1655 1656atabus*) 1657 unit=${i#atabus} 1658 mkdev atabus$unit c %atabus_chr% $unit 644 1659 ;; 1660 1661drvctl) 1662 mkdev drvctl c %drvctl_chr% 0 644 1663 ;; 1664 1665tap*) 1666 unit=${i#tap} 1667 case "$unit" in 1668 [0-9]*) 1669 mkdev tap${unit} c %tap_chr% ${unit} 600 1670 ;; 1671 *) 1672 mkdev tap c %tap_chr% 0xfffff 600 1673 ;; 1674 esac 1675 ;; 1676 1677fw*) 1678 unit=${i#fw} 1679 for j in 0 1 2 3 1680 do 1681 mkdev fw${unit}.${j} c %fw_chr% $((${unit} * 256 + ${j})) 660 ${g_operator} 1682 mkdev fwmem${unit}.${j} c %fw_chr% $((65536 + ${unit} * 256 + ${j})) 660 ${g_operator} 1683 done 1684 ;; 1685 1686puffs) 1687 mkdev puffs c %puffs_chr% 0x7ffff 600 1688 ;; 1689 1690midevend) 1691%MI_DEVICES_END% 1692local) 1693 if [ -f "$0.local" ]; then 1694 umask 0 1695 if [ -n "$count_nodes" ]; then 1696 sh "$0.local" $opts -s all | \ 1697 while read l; do 1698 count_nodes=$((count_nodes + 1)) 1699 done 1700 else 1701 sh "$0.local" $opts all 1702 fi 1703 umask 077 1704 else 1705 warn "missing $0.local" 1706 fi 1707 ;; 1708 1709*) 1710 warn "$i: unknown device" 1711 ;; 1712 1713esac 1714done 1715 1716} 1717 1718 1719# three variants of disk partitions - max 8, max 16, max 16 with highpartoffset 1720# hack; only the one used by port is retained in final MAKEDEV script 1721# routine is called as: 1722# makedisk name unit blk chr 1723makedisk_p8() 1724{ 1725 name="$1"; unit="$2"; blk="$3"; chr="$4" 1726 1727 mkdev ${name}${unit}a b $blk $(($unit * 8 + 0)) 640 $g_operator 1728 mkdev ${name}${unit}b b $blk $(($unit * 8 + 1)) 640 $g_operator 1729 mkdev ${name}${unit}c b $blk $(($unit * 8 + 2)) 640 $g_operator 1730 mkdev ${name}${unit}d b $blk $(($unit * 8 + 3)) 640 $g_operator 1731 mkdev ${name}${unit}e b $blk $(($unit * 8 + 4)) 640 $g_operator 1732 mkdev ${name}${unit}f b $blk $(($unit * 8 + 5)) 640 $g_operator 1733 mkdev ${name}${unit}g b $blk $(($unit * 8 + 6)) 640 $g_operator 1734 mkdev ${name}${unit}h b $blk $(($unit * 8 + 7)) 640 $g_operator 1735 mkdev r${name}${unit}a c $chr $(($unit * 8 + 0)) 640 $g_operator 1736 mkdev r${name}${unit}b c $chr $(($unit * 8 + 1)) 640 $g_operator 1737 mkdev r${name}${unit}c c $chr $(($unit * 8 + 2)) 640 $g_operator 1738 mkdev r${name}${unit}d c $chr $(($unit * 8 + 3)) 640 $g_operator 1739 mkdev r${name}${unit}e c $chr $(($unit * 8 + 4)) 640 $g_operator 1740 mkdev r${name}${unit}f c $chr $(($unit * 8 + 5)) 640 $g_operator 1741 mkdev r${name}${unit}g c $chr $(($unit * 8 + 6)) 640 $g_operator 1742 mkdev r${name}${unit}h c $chr $(($unit * 8 + 7)) 640 $g_operator 1743} 1744 1745makedisk_p16() 1746{ 1747 name="$1"; unit="$2"; blk="$3"; chr="$4" 1748 1749 mkdev ${name}${unit}a b $blk $(($unit * 16 + 0)) 640 $g_operator 1750 mkdev ${name}${unit}b b $blk $(($unit * 16 + 1)) 640 $g_operator 1751 mkdev ${name}${unit}c b $blk $(($unit * 16 + 2)) 640 $g_operator 1752 mkdev ${name}${unit}d b $blk $(($unit * 16 + 3)) 640 $g_operator 1753 mkdev ${name}${unit}e b $blk $(($unit * 16 + 4)) 640 $g_operator 1754 mkdev ${name}${unit}f b $blk $(($unit * 16 + 5)) 640 $g_operator 1755 mkdev ${name}${unit}g b $blk $(($unit * 16 + 6)) 640 $g_operator 1756 mkdev ${name}${unit}h b $blk $(($unit * 16 + 7)) 640 $g_operator 1757 mkdev ${name}${unit}i b $blk $(($unit * 16 + 8)) 640 $g_operator 1758 mkdev ${name}${unit}j b $blk $(($unit * 16 + 9)) 640 $g_operator 1759 mkdev ${name}${unit}k b $blk $(($unit * 16 + 10)) 640 $g_operator 1760 mkdev ${name}${unit}l b $blk $(($unit * 16 + 11)) 640 $g_operator 1761 mkdev ${name}${unit}m b $blk $(($unit * 16 + 12)) 640 $g_operator 1762 mkdev ${name}${unit}n b $blk $(($unit * 16 + 13)) 640 $g_operator 1763 mkdev ${name}${unit}o b $blk $(($unit * 16 + 14)) 640 $g_operator 1764 mkdev ${name}${unit}p b $blk $(($unit * 16 + 15)) 640 $g_operator 1765 mkdev r${name}${unit}a c $chr $(($unit * 16 + 0)) 640 $g_operator 1766 mkdev r${name}${unit}b c $chr $(($unit * 16 + 1)) 640 $g_operator 1767 mkdev r${name}${unit}c c $chr $(($unit * 16 + 2)) 640 $g_operator 1768 mkdev r${name}${unit}d c $chr $(($unit * 16 + 3)) 640 $g_operator 1769 mkdev r${name}${unit}e c $chr $(($unit * 16 + 4)) 640 $g_operator 1770 mkdev r${name}${unit}f c $chr $(($unit * 16 + 5)) 640 $g_operator 1771 mkdev r${name}${unit}g c $chr $(($unit * 16 + 6)) 640 $g_operator 1772 mkdev r${name}${unit}h c $chr $(($unit * 16 + 7)) 640 $g_operator 1773 mkdev r${name}${unit}i c $chr $(($unit * 16 + 8)) 640 $g_operator 1774 mkdev r${name}${unit}j c $chr $(($unit * 16 + 9)) 640 $g_operator 1775 mkdev r${name}${unit}k c $chr $(($unit * 16 + 10)) 640 $g_operator 1776 mkdev r${name}${unit}l c $chr $(($unit * 16 + 11)) 640 $g_operator 1777 mkdev r${name}${unit}m c $chr $(($unit * 16 + 12)) 640 $g_operator 1778 mkdev r${name}${unit}n c $chr $(($unit * 16 + 13)) 640 $g_operator 1779 mkdev r${name}${unit}o c $chr $(($unit * 16 + 14)) 640 $g_operator 1780 mkdev r${name}${unit}p c $chr $(($unit * 16 + 15)) 640 $g_operator 1781} 1782 1783makedisk_p16high() 1784{ 1785 ho=524280 # offset for partition 9 to 16 1786 name="$1"; unit="$2"; blk="$3"; chr="$4" 1787 1788 mkdev ${name}${unit}a b $blk $(($unit * 8 + 0)) 640 $g_operator 1789 mkdev ${name}${unit}b b $blk $(($unit * 8 + 1)) 640 $g_operator 1790 mkdev ${name}${unit}c b $blk $(($unit * 8 + 2)) 640 $g_operator 1791 mkdev ${name}${unit}d b $blk $(($unit * 8 + 3)) 640 $g_operator 1792 mkdev ${name}${unit}e b $blk $(($unit * 8 + 4)) 640 $g_operator 1793 mkdev ${name}${unit}f b $blk $(($unit * 8 + 5)) 640 $g_operator 1794 mkdev ${name}${unit}g b $blk $(($unit * 8 + 6)) 640 $g_operator 1795 mkdev ${name}${unit}h b $blk $(($unit * 8 + 7)) 640 $g_operator 1796 mkdev ${name}${unit}i b $blk $(($unit * 8 + $ho + 8)) 640 $g_operator 1797 mkdev ${name}${unit}j b $blk $(($unit * 8 + $ho + 9)) 640 $g_operator 1798 mkdev ${name}${unit}k b $blk $(($unit * 8 + $ho + 10)) 640 $g_operator 1799 mkdev ${name}${unit}l b $blk $(($unit * 8 + $ho + 11)) 640 $g_operator 1800 mkdev ${name}${unit}m b $blk $(($unit * 8 + $ho + 12)) 640 $g_operator 1801 mkdev ${name}${unit}n b $blk $(($unit * 8 + $ho + 13)) 640 $g_operator 1802 mkdev ${name}${unit}o b $blk $(($unit * 8 + $ho + 14)) 640 $g_operator 1803 mkdev ${name}${unit}p b $blk $(($unit * 8 + $ho + 15)) 640 $g_operator 1804 mkdev r${name}${unit}a c $chr $(($unit * 8 + 0)) 640 $g_operator 1805 mkdev r${name}${unit}b c $chr $(($unit * 8 + 1)) 640 $g_operator 1806 mkdev r${name}${unit}c c $chr $(($unit * 8 + 2)) 640 $g_operator 1807 mkdev r${name}${unit}d c $chr $(($unit * 8 + 3)) 640 $g_operator 1808 mkdev r${name}${unit}e c $chr $(($unit * 8 + 4)) 640 $g_operator 1809 mkdev r${name}${unit}f c $chr $(($unit * 8 + 5)) 640 $g_operator 1810 mkdev r${name}${unit}g c $chr $(($unit * 8 + 6)) 640 $g_operator 1811 mkdev r${name}${unit}h c $chr $(($unit * 8 + 7)) 640 $g_operator 1812 mkdev r${name}${unit}i c $chr $(($unit * 8 + $ho + 8)) 640 $g_operator 1813 mkdev r${name}${unit}j c $chr $(($unit * 8 + $ho + 9)) 640 $g_operator 1814 mkdev r${name}${unit}k c $chr $(($unit * 8 + $ho + 10)) 640 $g_operator 1815 mkdev r${name}${unit}l c $chr $(($unit * 8 + $ho + 11)) 640 $g_operator 1816 mkdev r${name}${unit}m c $chr $(($unit * 8 + $ho + 12)) 640 $g_operator 1817 mkdev r${name}${unit}n c $chr $(($unit * 8 + $ho + 13)) 640 $g_operator 1818 mkdev r${name}${unit}o c $chr $(($unit * 8 + $ho + 14)) 640 $g_operator 1819 mkdev r${name}${unit}p c $chr $(($unit * 8 + $ho + 15)) 640 $g_operator 1820} 1821 1822# make only the very few basic disk device nodes - 'a' partition 1823# and raw partition 1824makedisk_minimal() 1825{ 1826 name=$1; unit=$2; blk=$3; chr=$4 1827 doff=%DISKMINOROFFSET% 1828 ro=%RAWDISK_OFF% 1829 rn=%RAWDISK_NAME% 1830 1831 mkdev ${name}${unit}a b $blk $(($unit * $doff + 0)) 640 $g_operator 1832 mkdev ${name}${unit}$rn b $blk $(($unit * $doff + $ro)) 640 $g_operator 1833 mkdev r${name}${unit}a c $chr $(($unit * $doff + 0)) 640 $g_operator 1834 mkdev r${name}${unit}$rn c $chr $(($unit * $doff + $ro)) 640 $g_operator 1835} 1836 1837create_mfs_dev() 1838{ 1839 ninode=$((${1-1200} * 11 / 10)) 1840 fs_size=$((8192 + 2 * 8192 + 4096 + ninode*(128+18) + 8192)) 1841 fs_size=$((fs_size/512)) 1842 [ "$fs_size" -lt 80 ] && fs_size=80 1843 1844 dev_mountpoint=${PWD:-/dev} 1845 mount_mfs -b 4096 -f 512 -s $fs_size -n $ninode -p 07555 -o union swap $dev_mountpoint 1846 1847 cd $dev_mountpoint 1848 if $do_redirect; then 1849 # Redirect stdout and stderr to console 1850 mknod -m 600 -g 0 -u 0 temp_console c 0 0 1851 exec >temp_console 2>&1 1852 rm temp_console 1853 fi 1854 echo "Created mfs $dev_mountpoint ($fs_size blocks, $ninode inodes)" 1855} 1856 1857# 1858# MAIN: If MAKEDEV_AS_LIBRARY is set, then we are being used as a 1859# function library, so just return. Otherwise, call the setup function 1860# to parse command line args and set some other variables; then call the 1861# makedev function to create requested devices. 1862# 1863[ -n "${MAKEDEV_AS_LIBRARY}" ] && return 1864 1865setup ${1+"$@"} 1866shift $((${OPTIND}-1)) 1867 1868if $do_create_mfs; then 1869 # Count inodes and create mfs file system 1870 count_nodes=0 1871 makedev ${1+"$@"} 1872 create_mfs_dev $count_nodes 1873 unset count_nodes 1874fi 1875 1876if $do_pax ; then 1877 # wrap_makedev will print an mtree specification; 1878 # pax will create device nodes. 1879 wrap_makedev makedev ${1+"$@"} | ${TOOL_PAX} -r -w -M . 1880else 1881 wrap_makedev makedev ${1+"$@"} 1882fi 1883