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