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