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