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