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