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