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