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