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