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