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