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