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