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