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