MAKEDEV.tmpl revision 1.85
1#!/bin/sh - 2# $NetBSD: MAKEDEV.tmpl,v 1.85 2007/03/21 23:07:00 dyoung Exp $ 3# 4# Copyright (c) 2003,2007 The NetBSD Foundation, Inc. 5# All rights reserved. 6# 7# Redistribution and use in source and binary forms, with or without 8# modification, are permitted provided that the following conditions 9# are met: 10# 1. Redistributions of source code must retain the above copyright 11# notice, this list of conditions and the following disclaimer. 12# 2. Redistributions in binary form must reproduce the above copyright 13# notice, this list of conditions and the following disclaimer in the 14# documentation and/or other materials provided with the distribution. 15# 3. All advertising materials mentioning features or use of this software 16# must display the following acknowledgement: 17# This product includes software developed by the NetBSD 18# Foundation, Inc. and its contributors. 19# 4. Neither the name of The NetBSD Foundation nor the names of its 20# contributors may be used to endorse or promote products derived 21# from this software without specific prior written permission. 22# 23# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 24# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 25# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 26# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 27# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 28# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 29# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 30# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 31# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 32# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33# POSSIBILITY OF SUCH DAMAGE. 34# 35# 36########################################################################### 37# 38# PLEASE RUN "cd ../share/man/man8 ; make makedevs" 39# AFTER CHANGING THIS FILE, AND COMMIT THE UPDATED MANPAGE! 40# 41########################################################################### 42# 43# Device "make" file. Valid special arguments: 44# all makes all known devices, including local devices. 45# Tries to make the 'standard' number of each type. 46# init A set of devices that is used for MFS /dev by init. 47# May be equal to "all". 48# floppy devices to be put on install floppies 49# ramdisk devices to be put into INSTALL kernel ramdisks. 50# std standard devices 51# local configuration specific devices 52# wscons make wscons devices 53# usbs make USB devices 54# isdns make ISDN devices 55# 56# Tapes: 57# st* SCSI tapes 58# wt* QIC-interfaced (e.g. not SCSI) 3M cartridge tape 59# ht* MASSBUS TM03 and TU?? 60# mt* MSCP tapes (e.g. TU81, TK50) 61# tm* UNIBUS TM11 and TE10 emulations (e.g. Emulex TC-11) 62# ts* UNIBUS TS11 63# ut* UNIBUS TU45 emulations (e.g. si 9700) 64# uu* TU58 cassettes on DL11 controller 65# 66# Disks: 67# ccd* concatenated disk devices 68# cd* SCSI or ATAPI CD-ROM 69# cgd* cryptographic disk devices 70# raid* RAIDframe disk devices 71# sd* SCSI disks 72# wd* "winchester" disk drives (ST506,IDE,ESDI,RLL,...) 73# bmd* Nereid bank memory disks 74# ed* IBM PS/2 ESDI disk devices 75# fd* "floppy" disk drives (3 1/2", 5 1/4") 76# fss* Files system snapshot devices 77# gdrom* Dreamcast "gigadisc" CD-ROM drive 78# hk* UNIBUS RK06 and RK07 79# hp* MASSBUS RM?? 80# ld* Logical disk devices (e.g., hardware RAID) 81# mcd* Mitsumi CD-ROM 82# md* memory pseudo-disk devices 83# ofdisk* OpenFirmware disk devices 84# ra* MSCP disks (RA??, RD??) 85# rb* 730 IDC w/ RB80 and/or RB02 86# rd* HDC9224 RD disks on VS2000 87# rl* UNIBUS RL02 88# rx* MSCP floppy disk (RX33/50/...) 89# up* other UNIBUS devices (e.g. on Emulex SC-21V controller) 90# vnd* "file" pseudo-disks 91# xbd* Xen virtual disks 92# xd* Xylogic 753/7053 disks 93# xy* Xylogic 450/451 disks 94# 95# Pointing devices: 96# wsmouse* wscons mouse events 97# lms* Logitech bus mouse 98# mms* Microsoft bus mouse 99# qms* "quadrature mouse" 100# pms* PS/2 mouse 101# mouse mouse (provides events, for X11) 102# 103# Keyboard devices: 104# wskbd* wscons keyboard events 105# kbd raw keyboard (provides events, for X11) 106# kbdctl keyboard control 107# 108# Terminals/Console ports: 109# tty[01]* standard serial ports 110# tty0* SB1250 ("sbscn") serial ports (sbmips) 111# ttyE* wscons - Workstation console ("wscons") glass-tty emulators 112# ttyCZ? Cyclades-Z multiport serial boards. Each "unit" 113# makes 64 ports. 114# ttyCY? Cyclom-Y multiport serial boards. Each "unit" makes 115# 32 ports. 116# ttye* ITE bitmapped consoles 117# ttyv0 pccons 118# ttyC? NS16550 ("com") serial ports 119# ttyS* SA1110 serial port (hpcarm) 120# ttyTX? TX39 internal serial ports (hpcmips) 121# ttyB? DEC 3000 ZS8530 ("scc") serial ports (alpha) 122# ttyA* mfc serial ports (amiga) 123# ttyB* msc serial ports (amiga) 124# ttyC* com style serial ports (DraCo, HyperCom) (amiga) 125# On the DraCo, units 0 and 1 are the built-in "modem" and 126# "mouse" ports, if configured. 127# ttyA0 8530 Channel A (formerly ser02) (atari) 128# ttyA1 8530 Channel B (formerly mdm02) (atari) 129# ttyB0 UART on first 68901 (formerly mdm01) (atari) 130# ixpcom IXP12x0 COM ports 131# epcom EP93xx COM ports 132# ttyM? HP200/300 4 port serial mux interface (hp300) 133# ttya "ttya" system console (luna68k) 134# ttyb second system serial port (luna68k) 135# tty* Onboard serial ports (mvme68k) 136# On the mvme147 these are: ttyZ1, ttyZ2 and ttyZ3. 137# On the mvme167, and '177: ttyC1, ttyC2 and ttyC3. 138# Note that tty[CZ]0 is grabbed by the console device 139# so is not created by default 140# dc* PMAX 4 channel serial interface (kbd, mouse, modem, printer) 141# scc* 82530 serial interface (pmax) 142# ttyZ* Zilog 8530 ("zstty") serial ports 143# tty[abcd] Built-in serial ports (sparc) 144# tty* Z88530 serial controllers (sparc64) 145# ttyh* SAB82532 serial controllers (sparc64) 146# tty[a-j] Built-in serial ports (sun2, sun3) 147# ttyC? pccons (arc) 148# dz* UNIBUS DZ11 and DZ32 (vax) 149# dh* UNIBUS DH11 and emulations (e.g. Able DMAX, Emulex CS-11) (vax) 150# dmf* UNIBUS DMF32 (vax) 151# dhu* UNIBUS DHU11 (vax) 152# dmz* UNIBUS DMZ32 (vax) 153# dl* UNIBUS DL11 (vax) 154# xencons Xen virtual console 155# 156# Terminal multiplexors: 157# dc* 4 channel serial interface (keyboard, mouse, modem, printer) 158# dh* UNIBUS DH11 and emulations (e.g. Able DMAX, Emulex CS-11) 159# dhu* UNIBUS DHU11 160# dl* UNIBUS DL11 161# dmf* UNIBUS DMF32 162# dmz* UNIBUS DMZ32 163# dz* UNIBUS DZ11 and DZ32 164# scc* 82530 serial interface 165# 166# Call units: 167# dn* UNIBUS DN11 and emulations (e.g. Able Quadracall) 168# 169# Pseudo terminals: 170# ptm pty multiplexor device. 171# pty* set of 16 master and slave pseudo terminals 172# opty first 16 ptys, to save inodes on install media 173# ipty first 2 ptys, for install media use only 174# 175# Printers: 176# arcpp* Archimedes parallel port 177# lpt* stock lp 178# lpa* interruptless lp 179# par* Amiga motherboard parallel port 180# 181# USB devices: 182# usb* USB control devices 183# uhid* USB generic HID devices 184# ulpt* USB printer devices 185# ugen* USB generic devices 186# urio* USB Diamond Rio 500 devices 187# uscanner* USB scanners 188# ttyU* USB modems 189# ttyY* USB serial adapters 190# 191# ISDN devices: 192# isdn communication between userland isdnd and kernel 193# isdnctl control device 194# isdnbchan* raw b-channel access 195# isdntel* telephony device 196# isdnteld* telephony dialout device 197# isdntrc* trace device 198# 199# Video devices: 200# bwtwo* monochromatic frame buffer 201# cgtwo* 8-bit color frame buffer 202# cgthree* 8-bit color frame buffer 203# cgfour* 8-bit color frame buffer 204# cgsix* accelerated 8-bit color frame buffer 205# cgeight* 24-bit color frame buffer 206# etvme Tseng et-compatible cards on VME (atari) 207# ik* UNIBUS interface to Ikonas frame buffer 208# leo Circad Leonardo VME-bus true color (atari) 209# ps* UNIBUS interface to Picture System 2 210# qv* QVSS (MicroVAX) display 211# tcx* accelerated 8/24-bit color frame buffer 212# 213# Maple bus devices: 214# maple Maple bus control devices 215# mlcd* Maple bus LCD devices 216# mmem* Maple bus storage devices 217# 218# IEEE1394 bus devices: 219# fw* IEEE1394 bus generic node access devices 220# fwmem* IEEE1394 bus physical memory of the remote node access devices 221# 222# Special purpose devices: 223# ad* UNIBUS interface to Data Translation A/D converter 224# agp* AGP GART devices 225# altq ALTQ control interface 226# amr* AMI MegaRaid control device 227# apm power management device 228# audio* audio devices 229# bell* OPM bell device (x68k) 230# bktr Brooktree 848/849/878/879 based TV cards 231# bpf packet filter 232# bthub Bluetooth Device Hub control interface 233# cfs* Coda file system device 234# ch* SCSI media changer 235# cir* Consumer IR 236# clockctl clock control for non root users 237# crypto hardware crypto access driver 238# dmoverio hardware-assisted data movers 239# dpt* DPT/Adaptec EATA RAID management interface 240# dpti* DPT/Adaptec I2O RAID management interface 241# fb* PMAX generic framebuffer pseudo-device 242# fd file descriptors 243# grf* graphics frame buffer device 244# hil HP300 HIL input devices 245# icp ICP-Vortex/Intel RAID control interface 246# iic* IIC bus device 247# io x86 IOPL access for COMPAT_10, COMPAT_FREEBSD 248# iop* I2O IOP control interface 249# ipl IP Filter 250# irframe* IrDA physical frame 251# ite* terminal emulator interface to HP300 graphics devices 252# joy* joystick device 253# kttcp kernel ttcp helper device 254# lkm loadable kernel modules interface 255# lockstat kernel locking statistics 256# magma* Magma multiport serial/parallel cards 257# midi* MIDI 258# mlx* Mylex DAC960 control interface 259# mly* Mylex AcceleRAID/eXtremeRAID control interface 260# np* UNIBUS Ethernet co-processor interface, for downloading. 261# nsmb* SMB requester 262# openfirm OpenFirmware accessor 263# pci* PCI bus access devices 264# pf PF packet filter 265# pow* power management device (x68k) 266# puffs Pass-to-Userspace Framework File System 267# px* PixelStamp Xserver access 268# radio* radio devices 269# random Random number generator 270# rtc* RealTimeClock 271# satlink* PlanetConnect satellite receiver driver 272# scsibus* SCSI busses 273# se* SCSI Ethernet 274# ses* SES/SAF-TE SCSI Devices 275# speaker PC speaker (XXX - installed) 276# sram battery backuped memory (x68k) 277# ss* SCSI scanner 278# stic* PixelStamp interface chip 279# sysmon System Monitoring hardware 280# systrace syscall tracer 281# tap* virtual Ethernet device 282# tun* network tunnel driver 283# twa 3ware Apache control interface 284# twe 3ware Escalade control interface 285# uk* unknown SCSI device 286# veriexec verified executable fingerprint loader 287# vmegen* generic VME access 288# view* generic interface to graphic displays (Amiga) 289# wsfont* console font control 290# wsmux* wscons event multiplexor 291# xenevt Xen event interface 292 293 294# 295# Apart from a few lines right at the end, this file should consist 296# entirely of function definitions. 297# 298# This file is used both as a standalone script (via "sh ./MAKEDEV all" 299# or similar), and as a function library (via "MAKEDEV_AS_LIBRARY=1 . 300# MAKEDEV" from MAKEDEV.local). 301# 302 303usage() 304{ 305 cat 1>&2 << _USAGE_ 306Usage: ${0##*/} [-f] [-m mknod] [-s] special [...] 307 Create listed special devices. Options: 308 -f Force permissions to be updated on existing devices. 309 -m mknod Name of mknod(8) program. [\$TOOL_MKNOD or mknod] 310 -s Generate mtree(8) specfile instead of creating devices. 311 312_USAGE_ 313 exit 1 314} 315 316# zeropad width number 317# display number with a zero (`0') padding of width digits. 318# 319zeropad() 320{ 321 case $(($1 - ${#2})) in 322 5) echo 00000$2;; 323 4) echo 0000$2;; 324 3) echo 000$2;; 325 2) echo 00$2;; 326 1) echo 0$2;; 327 0) echo $2;; 328 *) echo "$0: bad padding" 1>&2; exit 1;; 329 esac 330} 331 332# hexprint number 333# display (base10) number as hexadecimal 334# 335hexprint() 336{ 337 val="$(($1 + 0))" 338 hex= 339 set -- 0 1 2 3 4 5 6 7 8 9 a b c d e f 340 while [ "$val" -gt 0 ]; do 341 eval hex=\$$(($val % 16 + 1))\$hex 342 val="$(($val / 16))" 343 done 344 echo "${hex:-0}" 345} 346 347setup() 348{ 349 PATH=/sbin:/usr/sbin:/bin:/usr/bin:/rescue 350 351 do_create_mfs=false 352 do_force=false 353 do_pax=false 354 do_redirect=false 355 do_specfile=false 356 opts= 357 while getopts Mfm:p:s ch; do 358 # Options that should not be passed through to 359 # MAKEDEV.local are not added to $opts. 360 case ${ch} in 361 M) 362 # "-M" sets do_create_mfs; 363 # "-M -M" also sets do_redirect 364 do_redirect=$do_create_mfs 365 do_create_mfs=true 366 ;; 367 f) do_force=true 368 opts="${opts} -f" 369 ;; 370 m) TOOL_MKNOD=${OPTARG} 371 opts="${opts} -m ${OPTARG}" 372 ;; 373 p) TOOL_PAX="${OPTARG}" 374 if ( echo "" | "${TOOL_PAX}" -w -M ); then 375 do_pax=true 376 else 377 warn "Ignored -p option:" \ 378 "${TOOL_PAX} is missing or broken" 379 fi 380 ;; 381 s) do_specfile=true 382 opts="${opts} -s" 383 ;; 384 *) usage ;; 385 esac 386 done 387 388 shift $((${OPTIND} - 1)) 389 [ $# -gt 0 ] || usage 390 391 MKNOD="${TOOL_MKNOD:-mknod} -F netbsd" 392 if $do_force; then 393 MKNOD="${MKNOD} -R" 394 else 395 MKNOD="${MKNOD} -r" 396 fi 397 398 u_root="%uid_root%" 399 u_uucp="%uid_uucp%" 400 g_kmem="%gid_kmem%" 401 g_ntpd="%gid_ntpd%" 402 g_operator="%gid_operator%" 403 g_wheel="%gid_wheel%" 404 dialin=0 405 dialout=524288 406 callunit=262144 407 408 # only allow read&write for owner by default 409 umask 077 410 411 # Check if we have fdesc mounted 412 if [ -d fd ]; then 413 case "$(df fd)" in 414 *fdesc*) nofdesc=false;; 415 *) nofdesc=true;; 416 esac 417 else 418 nofdesc=true 419 fi 420 421 if $do_pax && ! $do_specfile; then 422 do_specfile=true 423 opts="${opts} -s" 424 fi 425} 426 427# 428# functions available to create nodes: 429# 430# mkdev name [b|c] major minor [mode{=600} [gid{=0} [uid{=0}]]] 431# create device node `name' with the appropriate permissions 432# 433# lndev src target 434# create a symlink from src to target 435# 436# makedir dir mode 437# create directory with appropriate mode 438# 439 440mkdev() 441{ 442 if [ -n "$count_nodes" ]; then 443 count_nodes=$((count_nodes + 1)) 444 return 445 fi 446 if $do_specfile; then 447 case $2 in 448 b) type=block ;; 449 c) type=char ;; 450 esac 451 echo "./$1 type=${type} device=netbsd,$3,$4 mode=${5:-600} gid=${6:-$g_wheel} uid=${7:-$u_root}" 452 else 453 ${MKNOD} -m ${5:-600} -g \#${6:-$g_wheel} -u \#${7:-$u_root} $1 $2 $3 $4 454 fi 455} 456 457lndev() 458{ 459 if [ -n "$count_nodes" ]; then 460 count_nodes=$((count_nodes + 1)) 461 return 462 fi 463 if $do_specfile; then 464 echo "./$2 type=link link=$1 mode=0700 gid=$g_wheel uid=$u_root" 465 else 466 ln -f -s $1 $2 467 fi 468} 469 470makedir() 471{ 472 if [ -n "$count_nodes" ]; then 473 count_nodes=$((count_nodes + 1)) 474 return 475 fi 476 if $do_specfile; then 477 echo "./$1 type=dir mode=$2 gid=$g_wheel uid=$u_root" 478 else 479 mkdir $1 2>/dev/null 480 chmod $2 $1 481 fi 482} 483 484warn() 485{ 486 echo 1>&2 "$0: $*" 487} 488 489# wrap_makedev makedev ... 490wrap_makedev() 491{ 492 if $do_specfile; then 493 # "optional" tells pax(1) not to create the directory itself. 494 echo ". type=dir optional" 495 fi 496 eval "$@" 497} 498 499# makedev special [...] 500# the main loop 501# 502makedev() 503{ 504 505for i 506do 507 508case $i in 509 510%MD_DEVICES% 511 512all) 513 makedev all_md 514 makedev std fd ptm pty0 pty1 pty2 pty3 515 makedev ccd0 ccd1 ccd2 ccd3 516 makedev cgd0 cgd1 cgd2 cgd3 517 makedev fss0 fss1 fss2 fss3 518 makedev md0 md1 519 makedev raid0 raid1 raid2 raid3 raid4 raid5 raid6 raid7 520 makedev vnd0 vnd1 vnd2 vnd3 521 makedev bpf 522 makedev tun0 tun1 tun2 tun3 523 makedev ipl pf crypto random systrace 524 makedev lkm lockstat clockctl 525 makedev atabus0 atabus1 atabus2 atabus3 526 makedev tap tap0 tap1 tap2 tap3 527 makedev gpio gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7 528 makedev bthub 529 makedev puffs 530 makedev local # do this last 531 ;; 532 533init) 534 # unless overridden by MD entry, this is equal to 'all' 535 makedev all 536 ;; 537 538%MI_DEVICES_BEGIN% 539audio) 540 makedev audio0 audio1 audio2 audio3 541 lndev sound0 sound 542 lndev audio0 audio 543 lndev mixer0 mixer 544 lndev audioctl0 audioctl 545 ;; 546 547gpio) 548 makedev gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7 549 lndev gpio0 gpio 550 ;; 551 552radio) 553 makedev radio0 radio1 554 lndev radio0 radio 555 ;; 556 557ramdisk) 558 makedev floppy md0 559 ;; 560 561usbs) 562 makedev usb usb0 usb1 usb2 usb3 usb4 usb5 usb6 usb7 563 makedev uhid0 uhid1 uhid2 uhid3 564 makedev ulpt0 ulpt1 565 makedev ttyU0 ttyU1 566 makedev ttyY0 ttyY1 567 makedev urio0 568 makedev uscanner0 uscanner1 569 makedev utoppy0 utoppy1 570 makedev ugen0 571 ;; 572 573isdns) 574 makedev isdn isdnctl isdnbchan0 isdnbchan1 isdntel0 isdntel1 isdnteld0 isdnteld1 isdntrc0 isdntrc1 575 ;; 576 577std) 578 mkdev console c %cons_chr% 0 600 579 mkdev constty c %cons_chr% 1 600 580 mkdev drum c %swap_chr% 0 640 $g_kmem 581 mkdev kmem c %mem_chr% 1 640 $g_kmem 582 mkdev mem c %mem_chr% 0 640 $g_kmem 583 mkdev null c %mem_chr% 2 666 584 mkdev zero c %mem_chr% 12 666 585 mkdev klog c %log_chr% 0 600 586 mkdev ksyms c %ksyms_chr% 0 444 587 if $nofdesc; then 588 mkdev tty c %ctty_chr% 0 666 589 mkdev stdin c %filedesc_chr% 0 666 590 mkdev stdout c %filedesc_chr% 1 666 591 mkdev stderr c %filedesc_chr% 2 666 592 fi 593 ;; 594 595usb) 596 mkdev usb c %usb_chr% 255 444 597 ;; 598 599usb*) 600 unit=${i#usb} 601 usb=usb$unit 602 mkdev usb$unit c %usb_chr% $unit 603 ;; 604 605uhid*) 606 unit=${i#uhid} 607 mkdev uhid$unit c %uhid_chr% $unit 666 608 ;; 609 610ulpt*) 611 unit=${i#ulpt} 612 mkdev ulpt$unit c %ulpt_chr% $unit 613 mkdev ulpn$unit c %ulpt_chr% $(($unit + 64)) 614 ;; 615 616urio*) 617 unit=${i#urio} 618 mkdev urio$unit c %urio_chr% $unit 666 619 ;; 620 621uscanner*) 622 unit=${i#uscanner} 623 mkdev uscanner$unit c %uscanner_chr% $unit 624 ;; 625 626utoppy*) 627 unit=${i#utoppy} 628 mkdev utoppy$unit c %utoppy_chr% $unit 629 ;; 630 631ttyY*) 632 unit=${i#ttyY} 633 mkdev ttyY$unit c %ucycom_chr% $(($unit + $dialin )) "" "" $u_uucp 634 mkdev dtyY$unit c %ucycom_chr% $(($unit + $dialout )) "" "" $u_uucp 635 mkdev ctyY$unit c %ucycom_chr% $(($unit + $callunit)) "" "" $u_uucp 636 ;; 637 638ttyU*) 639 unit=${i#ttyU} 640 mkdev ttyU$unit c %ucom_chr% $(($unit + $dialin )) "" "" $u_uucp 641 mkdev dtyU$unit c %ucom_chr% $(($unit + $dialout )) "" "" $u_uucp 642 mkdev ctyU$unit c %ucom_chr% $(($unit + $callunit)) "" "" $u_uucp 643 ;; 644 645ugen*) 646 unit=${i#ugen} 647 for j in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 648 do 649 mkdev ugen$unit.$j c %ugen_chr% $(($unit * 16 + ${j#0})) 650 done 651 ;; 652 653wscons) 654 makedev ttyE0 ttyE1 ttyE2 ttyE3 ttyE4 ttyE5 ttyE6 ttyE7 655 makedev wsmouse0 wsmouse1 wsmouse2 wsmouse3 656 makedev wskbd0 wskbd1 wskbd2 wskbd3 657 makedev wsmux0 wsmux1 wsmux2 wsmux3 658 makedev wsmouse wskbd 659 makedev ttyEcfg ttyEstat 660 makedev wsfont 661 ;; 662 663wsmouse) 664 mkdev wsmouse c %wsmux_chr% 0 665 ;; 666 667wskbd) 668 mkdev wskbd c %wsmux_chr% 1 669 ;; 670 671wsmux*) 672 unit=${i#wsmux} 673 mkdev wsmux$unit c %wsmux_chr% $unit 674 mkdev wsmuxctl$unit c %wsmux_chr% $(($unit + 128)) 200 675 ;; 676 677xenevt) 678 mkdev xenevt c %xenevt_chr% 0 679 ;; 680 681xsd_kva) 682 mkdev xsd_kva c %xenevt_chr% 1 683 ;; 684 685xencons) 686 mkdev xencons c %xencons_chr% 0 687 ;; 688 689ttyEstat) 690 mkdev ttyEstat c %wsdisplay_chr% 254 691 ;; 692 693ttyEcfg) 694 mkdev ttyEcfg c %wsdisplay_chr% 255 695 ;; 696 697ttyE*) 698 unit=${i#ttyE} 699 mkdev ttyE$unit c %wsdisplay_chr% $unit 700 ;; 701 702wsmouse*) 703 unit=${i#wsmouse} 704 mkdev wsmouse$unit c %wsmouse_chr% $unit 705 ;; 706 707wskbd*) 708 unit=${i#wskbd} 709 mkdev wskbd$unit c %wskbd_chr% $unit 710 ;; 711 712fd) 713 if $nofdesc; then 714 makedir fd 755 715 n=0 716 while [ $n -lt 64 ] 717 do 718 mkdev fd/$n c %filedesc_chr% $n 666 719 n=$(($n + 1)) 720 done 721 fi 722 ;; 723 724wt*) 725 case $i in 726 wt*) name=wt; unit=${i#wt}; chr=%wt_chr%; blk=%wt_blk%;; 727 esac 728 for sub in $unit $(($unit+8)) $(($unit+16)) 729 do 730 mkdev $name$sub b $blk $(($sub + 0)) 660 $g_operator 731 mkdev n$name$sub b $blk $(($sub + 4)) 660 $g_operator 732 mkdev r$name$sub c $chr $(($sub + 0)) 660 $g_operator 733 mkdev nr$name$sub c $chr $(($sub + 4)) 660 $g_operator 734 done 735 ;; 736 737md*) 738 makedisk_minimal md ${i#md} %md_blk% %md_chr% 739 ;; 740 741fss*) 742 case $i in 743 fss*) name=fss; unit=${i#fss}; blk=%fss_blk%; chr=%fss_chr% 744 esac 745 mkdev $name$unit b $blk $unit 660 $g_operator 746 mkdev r$name$unit c $chr $unit 660 $g_operator 747 ;; 748 749ss*) 750 case $i in 751 ss*) name=ss; unit=${i#ss}; chr=%ss_chr%;; 752 esac 753 mkdev $name$unit c $chr $(($unit * 16 + 0)) 640 $g_operator 754 mkdev n$name$unit c $chr $(($unit * 16 + 1)) 640 $g_operator 755 mkdev en$name$unit c $chr $(($unit * 16 + 3)) 640 $g_operator 756 ;; 757 758ccd*|cgd*|raid*|vnd*) 759 case $i in 760 ccd*) name=ccd; unit=${i#ccd}; blk=%ccd_blk%; chr=%ccd_chr%;; 761 cgd*) name=cgd; unit=${i#cgd}; blk=%cgd_blk%; chr=%cgd_chr%;; 762 raid*) name=raid; unit=${i#raid}; blk=%raid_blk%; chr=%raid_chr%;; 763 vnd*) name=vnd; unit=${i#vnd}; blk=%vnd_blk%; chr=%vnd_chr%;; 764 esac 765 %MKDISK% $name $unit $blk $chr 766 ;; 767 768sd*) 769 name=sd; unit=${i#sd}; blk=%sd_blk%; chr=%sd_chr% 770 %MKDISK% $name $unit $blk $chr 771 ;; 772 773wd*) 774 name=wd; unit=${i#wd}; blk=%wd_blk%; chr=%wd_chr% 775 %MKDISK% $name $unit $blk $chr 776 ;; 777 778fd*) 779 name=fd; unit=${i#fd}; blk=%fd_blk%; chr=%fd_chr% 780 %MKDISK% $name $unit $blk $chr 781 ;; 782 783ld*) 784 name=ld; unit=${i#ld}; blk=%ld_blk%; chr=%ld_chr% 785 %MKDISK% $name $unit $blk $chr 786 ;; 787 788ed*) 789 name=ed; unit=${i#ed}; blk=%ed_blk%; chr=%ed_chr% 790 %MKDISK% $name $unit $blk $chr 791 ;; 792 793ofdisk*) 794 name=ofdisk; unit=${i#ofdisk}; blk=%ofdisk_blk%; chr=%ofdisk_chr% 795 %MKDISK% $name $unit $blk $chr 796 ;; 797 798xbd*) 799 name=xbd; unit=${i#xbd}; blk=%xbd_blk%; chr=%xbd_chr% 800 %MKDISK% $name $unit $blk $chr 801 ;; 802 803dk*) 804 name=dk; unit=${i#dk}; blk=%dk_blk%; chr=%dk_chr% 805 minor=0 806 while [ $minor -le ${i#dk} ] 807 do 808 mkdev r$name$minor c $chr $minor 0640 $g_operator 809 mkdev $name$minor b $blk $minor 0640 $g_operator 810 minor=$(($minor + 1)) 811 done 812 ;; 813 814ttyCY*) 815 name=tyCY; chr=%cy_chr%; off=32 816 unit=${i#t${name}} 817 minor=$(($unit * $off)) 818 eminor=$(($minor + $off)) 819 while [ $minor -lt $eminor ] 820 do 821 nminor=000$minor 822 nminor=${nminor#${nminor%???}} 823 mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp 824 mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp 825 minor=$(($minor + 1)) 826 done 827 ;; 828 829ttyCZ*) 830 name=tyCZ; chr=%cz_chr%; off=64 831 unit=${i#t${name}} 832 minor=$(($unit * $off)) 833 eminor=$(($minor + $off)) 834 while [ $minor -lt $eminor ] 835 do 836 nminor=0000$minor 837 nminor=${nminor#${nminor%????}} 838 mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp 839 mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp 840 minor=$(($minor + 1)) 841 done 842 ;; 843 844 845tty[0-9]|tty0[0-9]) 846 # some archs have built-in zstty (major %zstty_chr%) instead 847 # of NS16550; create ttyZ* and hardlink as [dt]ty0*; this 848 # needs to be before com entry, for archs which have both 849 unit=${i#tty} 850 unit=$(($unit + 0)) 851 makedev ttyZ${unit} 852 lndev ttyZ$unit tty0${unit} 853 lndev dtyZ$unit dty0${unit} 854 ;; 855 856tty0*|tty1*|tty[0-9]) 857 unit=${i#tty} 858 ounit=00$unit 859 ounit=${ounit#${ounit%??}} 860 mkdev tty$ounit c %com_chr% $(($unit + $dialin )) "" "" $u_uucp 861 mkdev dty$ounit c %com_chr% $(($unit + $dialout)) "" "" $u_uucp 862 ;; 863 864ttyC*) 865 # some archs call com_chr ttyC traditionally 866 unit=${i#ttyC}; name=ttyC; dname=dtyC; chr=%com_chr% 867 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 868 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 869 ;; 870 871ttyh*) 872 unit=${i#ttyh}; name=ttyh; dname=dtyh; chr=%sabtty_chr% 873 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 874 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 875 ;; 876 877ttyTX*) 878 unit=${i#ttyTX}; name=ttyTX0; dname=dtyTX0; chr=%txcom_chr% 879 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 880 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 881 ;; 882 883ttyZ*) 884 unit=${i#ttyZ}; name=ttyZ; dname=dtyZ; chr=%zstty_chr% 885 mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp 886 mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp 887 ;; 888 889opty) 890 for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f 891 do 892 case $j in 893 [0-9]) jn=$j ;; 894 a) jn=10 ;; 895 b) jn=11 ;; 896 c) jn=12 ;; 897 d) jn=13 ;; 898 e) jn=14 ;; 899 f) jn=15 ;; 900 esac 901 mkdev ttyp$j c %pts_chr% $jn 666 902 mkdev ptyp$j c %ptc_chr% $jn 666 903 done 904 ;; 905 906pty*) 907 class=${i#pty} 908 d1="p q r s t u v w x y z P Q R S T" 909 if [ "$class" -ge 64 ] 910 then 911 warn "$i: pty unit must be between 0 and 63" 912 continue 913 elif [ "$class" -lt 16 ] 914 then 915 offset=0 916 mult=0 917 d2="0 1 2 3 4 5 6 7 8 9 a b c d e f" 918 else 919 class=$(($class - 16)) 920 offset=256 921 mult=2 922 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" 923 fi 924 start=$(($class * 16)) 925 set -- $d2 926 nt=$# 927 s1=$(($start / $nt)) 928 set -- $d1 929 shift $s1 930 t1=$1 931 if [ "$t1" = v ]; then 932 warn "$i: pty unit conflicts with console ttyv0 device" 933 continue 934 fi 935 s2=$(($start % ($nt - $s1 * $mult))) 936 set -- $d2 937 shift $s2 938 t2=$1 939 unit=$(($start + $offset - $s1 * $mult)) 940 end=$(($unit + 16)) 941 while [ "$unit" -lt "$end" ] 942 do 943 mkdev tty$t1$t2 c %pts_chr% $unit 666 944 mkdev pty$t1$t2 c %ptc_chr% $unit 666 945 shift 946 t2=$1 947 if [ -z "$t2" ] 948 then 949 break 950 fi 951 unit=$(($unit + 1)) 952 done 953 ;; 954 955stic*) 956 unit=${i#stic} 957 mkdev stic$unit c %stic_chr% $unit 958 ;; 959 960st*) 961 case $i in 962 st*) name=st; unit=${i#st}; chr=%st_chr%; blk=%st_blk%;; 963 esac 964 mkdev $name$unit b $blk $(($unit * 16 + 0)) 660 $g_operator 965 mkdev n$name$unit b $blk $(($unit * 16 + 1)) 660 $g_operator 966 mkdev e$name$unit b $blk $(($unit * 16 + 2)) 660 $g_operator 967 mkdev en$name$unit b $blk $(($unit * 16 + 3)) 660 $g_operator 968 mkdev r$name$unit c $chr $(($unit * 16 + 0)) 660 $g_operator 969 mkdev nr$name$unit c $chr $(($unit * 16 + 1)) 660 $g_operator 970 mkdev er$name$unit c $chr $(($unit * 16 + 2)) 660 $g_operator 971 mkdev enr$name$unit c $chr $(($unit * 16 + 3)) 660 $g_operator 972 ;; 973 974ses*|ch*|uk*) 975 case $i in 976 ch*) name=ch; unit=${i#ch}; chr=%ch_chr%;; 977 uk*) name=uk; unit=${i#uk}; chr=%uk_chr%;; 978 ses*) name=ses; unit=${i#ses}; chr=%ses_chr%;; 979 esac 980 mkdev $name$unit c $chr $unit 640 $g_operator 981 ;; 982 983cd*) 984 makedisk_minimal cd ${i#cd} %cd_blk% %cd_chr% % 985 ;; 986 987mcd*) 988 makedisk_minimal mcd ${i#mcd} %mcd_blk% %mcd_chr% 989 ;; 990 991gdrom*) 992 makedisk_minimal gdrom ${i#gdrom} %gdrom_blk% %gdrom_chr% 993 ;; 994 995lpt*|lpa*) 996 case $i in 997 lpt*) name=lpt; unit=${i#lpt}; chr=%lpt_chr%; flags=0;; 998 lpa*) name=lpa; unit=${i#lpa}; chr=%lpt_chr%; flags=128;; 999 esac 1000 mkdev $name$unit c $chr $(($unit + $flags)) 1001 mkdev lpt${unit}ctl c $chr $(($unit + 256)) 1002 ;; 1003 1004bpf) 1005 mkdev bpf c %bpf_chr% 0 1006 lndev bpf bpf0 1007 ;; 1008 1009bthub) 1010 mkdev bthub c %bthub_chr% 0 1011 ;; 1012 1013tun*) 1014 unit=${i#tun} 1015 mkdev tun$unit c %tun_chr% $unit 1016 ;; 1017 1018joy*) 1019 unit=${i#joy} 1020 mkdev joy$unit c %joy_chr% $unit 1021 ;; 1022 1023ipl) 1024 mkdev ipl c %ipl_chr% 0 1025 mkdev ipnat c %ipl_chr% 1 1026 mkdev ipstate c %ipl_chr% 2 1027 mkdev ipauth c %ipl_chr% 3 1028 mkdev ipsync c %ipl_chr% 4 1029 mkdev ipscan c %ipl_chr% 5 1030 mkdev iplookup c %ipl_chr% 6 1031 ;; 1032 1033pf) 1034 mkdev pf c %pf_chr% 0 1035 ;; 1036 1037crypto) 1038 mkdev crypto c %crypto_chr% 0 666 1039 ;; 1040 1041cmos) 1042 mkdev cmos c %cmos_chr% 0 644 1043 ;; 1044 1045speaker) 1046 mkdev speaker c %spkr_chr% 0 1047 ;; 1048 1049lkm) 1050 mkdev lkm c %lkm_chr% 0 640 $g_kmem 1051 ;; 1052 1053lockstat) 1054 mkdev lockstat c %lockstat_chr% 0 1055 ;; 1056 1057audio*) 1058 unit=${i#audio} 1059 audio=audio$unit 1060 sound=sound$unit 1061 mixer=mixer$unit 1062 audioctl=audioctl$unit 1063 : ${unit:-0} 1064 mkdev $sound c %audio_chr% $(($unit + 0)) 666 1065 mkdev $audio c %audio_chr% $(($unit + 128)) 666 1066 mkdev $mixer c %audio_chr% $(($unit + 16)) 666 1067 mkdev $audioctl c %audio_chr% $(($unit + 192)) 666 1068 ;; 1069 1070gpio*) 1071 unit=${i#gpio} 1072 mkdev gpio$unit c %gpio_chr% $unit 644 1073 ;; 1074 1075rmidi*) 1076 unit=${i#rmidi} 1077 mkdev rmidi$unit c %midi_chr% $unit 666 1078 ;; 1079 1080music*) 1081 unit=${i#music} 1082 : ${unit:-0} 1083 mkdev music$unit c %sequencer_chr% $(($unit + 0)) 666 1084 mkdev sequencer$unit c %sequencer_chr% $(($unit + 128)) 666 1085 ;; 1086 1087radio*) 1088 unit=${i#radio} 1089 : ${unit:-0} 1090 mkdev radio$unit c %radio_chr% $unit 666 1091 ;; 1092 1093amr*) 1094 unit=${i#amr} 1095 mkdev amr$unit c %amr_chr% $unit 1096 ;; 1097 1098apm) 1099 mkdev apm c %apm_chr% 0 644 1100 mkdev apmctl c %apm_chr% 8 644 1101 ;; 1102 1103apm) 1104 # hpcmips uses `apmdev_chr' instead of `apm_chr' 1105 mkdev apm c %apmdev_chr% 0 644 1106 mkdev apmctl c %apmdev_chr% 8 644 1107 ;; 1108 1109satlink*) 1110 unit=${i#satlink} 1111 mkdev satlink$unit c %satlink_chr% $unit 444 1112 ;; 1113 1114random) 1115 mkdev random c %rnd_chr% 0 444 1116 mkdev urandom c %rnd_chr% 1 644 1117 ;; 1118 1119cfs*) 1120 unit=${i#cfs} 1121 mkdev cfs$unit c %vcoda_chr% $unit 1122 ;; 1123 1124sysmon) 1125 mkdev sysmon c %sysmon_chr% 0 644 1126 mkdev watchdog c %sysmon_chr% 1 644 1127 mkdev power c %sysmon_chr% 2 640 1128 ;; 1129 1130scsibus*) 1131 unit=${i#scsibus} 1132 mkdev scsibus$unit c %scsibus_chr% $unit 644 1133 ;; 1134 1135bktr) 1136 makedev bktr0 bktr1 1137 lndev bktr0 bktr 1138 lndev tuner0 tuner 1139 lndev vbi0 vbi 1140 ;; 1141 1142bktr*) 1143 unit=${i#bktr} 1144 mkdev bktr$unit c %bktr_chr% $(($unit + 0)) 444 1145 mkdev tuner$unit c %bktr_chr% $(($unit + 16)) 444 1146 mkdev vbi$unit c %bktr_chr% $(($unit + 32)) 444 1147 ;; 1148 1149io) 1150 mkdev io c %mem_chr% 14 600 1151 ;; 1152 1153iop*) 1154 unit=${i#iop} 1155 mkdev iop$unit c %iop_chr% $unit 1156 ;; 1157 1158mlx*) 1159 unit=${i#mlx} 1160 mkdev mlx$unit c %mlx_chr% $unit 1161 ;; 1162 1163mly*) 1164 unit=${i#mly} 1165 mkdev mly$unit c %mly_chr% $unit 1166 ;; 1167 1168twa*) 1169 unit=${i#twa} 1170 mkdev twa$unit c %twa_chr% $unit 1171 ;; 1172 1173twe*) 1174 unit=${i#twe} 1175 mkdev twe$unit c %twe_chr% $unit 1176 ;; 1177 1178icp*) 1179 unit=${i#icp} 1180 mkdev icp$unit c %icp_chr% $unit 1181 ;; 1182 1183agp*) 1184 unit=${i#agp} 1185 mkdev agp$unit c %agp_chr% $unit 644 1186 if [ "$unit" = "0" ]; then 1187 lndev agp$unit agpgart 1188 fi 1189 ;; 1190 1191pci*) 1192 unit=${i#pci} 1193 mkdev pci$unit c %pci_chr% $unit 644 1194 ;; 1195 1196dpti*) 1197 unit=${i#dpti} 1198 mkdev dpti$unit c %dpti_chr% $unit 1199 ;; 1200 1201dpt*) 1202 unit=${i#dpt} 1203 mkdev dpt$unit c %dpt_chr% $unit 1204 ;; 1205 1206altq) 1207 makedir altq 755 1208 unit=0 1209 for dev in altq cbq wfq afm fifoq red rio localq hfsc cdnr blue priq 1210 do 1211 mkdev altq/$dev c %altq_chr% $unit 644 1212 unit=$(($unit + 1)) 1213 done 1214 ;; 1215 1216isdn) 1217 mkdev isdn c %isdn_chr% 0 1218 ;; 1219 1220isdnctl) 1221 mkdev isdnctl c %isdnctl_chr% 0 1222 ;; 1223 1224isdnbchan*) 1225 unit=${i#isdnbchan} 1226 mkdev isdnbchan$unit c %isdnbchan_chr% $unit 1227 ;; 1228 1229isdnteld*) 1230 unit=${i#isdnteld} 1231 mkdev isdnteld$unit c %isdntel_chr% $(($unit + 64)) 1232 ;; 1233 1234isdntel*) 1235 unit=${i#isdntel} 1236 mkdev isdntel$unit c %isdntel_chr% $unit 1237 ;; 1238 1239isdntrc*) 1240 unit=${i#isdntrc} 1241 mkdev isdntrc$unit c %isdntrc_chr% $unit 1242 ;; 1243 1244vmegen) 1245 makedev vmegen0 vmegen1 vmegen2 vmegen3 1246 ;; 1247 1248vmegen*) 1249 unit=${i#vmegen} 1250 mkdev vmegen$unit c %vmegeneric_chr% $(($unit * 16 + 0)) 1251 ;; 1252 1253wsfont) 1254 mkdev wsfont c %wsfont_chr% 0 1255 ;; 1256 1257cir*) 1258 unit=${i#cir} 1259 mkdev cir$unit c %cir_chr% $unit 666 1260 ;; 1261 1262irframe*) 1263 unit=${i#irframe} 1264 mkdev irframe$unit c %irframe_chr% $unit 1265 ;; 1266 1267fcom*) 1268 unit=${i#fcom} 1269 mkdev fcom$unit c %fcom_chr% $unit "" "" $u_uucp 1270 ;; 1271 1272openfirm) 1273 mkdev openfirm c %openfirm_chr% 0 444 1274 ;; 1275 1276nvram) 1277 mkdev nvram c %nvram_chr% 0 644 1278 ;; 1279 1280rtc) 1281 mkdev rtc c %rtc_chr% 0 644 1282 ;; 1283 1284clockctl) 1285 mkdev clockctl c %clockctl_chr% 0 660 $g_ntpd 1286 ;; 1287 1288nsmb) 1289 makedev nsmb0 nsmb1 nsmb2 nsmb3 1290 ;; 1291 1292nsmb*) 1293 unit=${i#nsmb} 1294 mkdev nsmb$unit c %nsmb_chr% $unit 644 1295 ;; 1296 1297systrace) 1298 mkdev systrace c %systrace_chr% 0 644 1299 ;; 1300 1301kttcp) 1302 mkdev kttcp c %kttcp_chr% 0 1303 ;; 1304 1305dmoverio) 1306 mkdev dmoverio c %dmoverio_chr% 0 644 1307 ;; 1308 1309veriexec) 1310 mkdev veriexec c %veriexec_chr% 0 600 1311 ;; 1312 1313ttyv*) 1314 unit=${i#ttyv} 1315 mkdev ttyv$unit c %pc_chr% $unit 1316 ;; 1317 1318# arm, acorn32 1319ttyv*) 1320 unit=${i#ttyv} 1321 mkdev ttyv$unit c %physcon_chr% $unit 1322 ;; 1323 1324arcpp*) 1325 unit=${i#arcpp} 1326 mkdev arcpp$unit c %arcpp_chr% $unit 1327 ;; 1328 1329par*) 1330 unit=${i#par} 1331 case $unit in 1332 0) 1333 mkdev par$unit c %par_chr% $unit 1334 ;; 1335 *) 1336 warn "bad unit for par in: $i" 1337 ;; 1338 esac 1339 ;; 1340 1341ite*|ttye*) 1342 case $i in 1343 ite*) unit=${i#ite};; 1344 ttye*) unit=${i#ttye};; 1345 esac 1346 mkdev ttye$unit c %ite_chr% $unit 1347 ;; 1348 1349pms*) 1350 unit=${i#pms} 1351 mkdev pms$unit c %opms_chr% $unit 1352 ;; 1353 1354qms*) 1355 unit=${i#qms} 1356 mkdev qms$unit c %qms_chr% $unit 1357 ;; 1358 1359lms*) 1360 unit=${i#lms} 1361 mkdev lms$unit c %lms_chr% $unit 1362 ;; 1363 1364mms*) 1365 unit=${i#mms} 1366 mkdev mms$unit c %mms_chr% $unit 1367 ;; 1368 1369mouse-*) 1370 case $i in 1371 mouse-pms*) name=pms ;; 1372 mouse-qms*) name=qms ;; 1373 esac 1374 unit=${i#mouse-${name}} 1375 lndev $name$unit mouse 1376 ;; 1377 1378kbd) 1379 mkdev kbd c %kbd_chr% 0 1380 ;; 1381 1382kbdctl) 1383 mkdev kbdctl c %kbd_chr% 1 1384 ;; 1385 1386vidcconsole0) 1387 mkdev vidcconsole0 c %vidcconsole_chr% 0 640 1388 ;; 1389 1390view*) 1391 unit=${i#view} 1392 mkdev view$unit c %view_chr% $unit 666 1393 ;; 1394 1395mouse*) 1396 unit=${i#mouse} 1397 case $unit in 1398 0|1) 1399 mkdev mouse$unit c %ms_chr% $unit 666 1400 if [ $unit = 0 ]; then 1401 lndev mouse$unit mouse 1402 fi 1403 ;; 1404 *) 1405 warn "bad unit for mouse in: $i" 1406 ;; 1407 esac 1408 ;; 1409 1410panel) 1411 mkdev panel0 c %panel_chr% 0 660 1412 ;; 1413 1414tslcd) 1415 mkdev tslcd0 c %tslcd_chr% 0 660 1416 ;; 1417 1418ipty) 1419 mkdev ttyp0 c %pts_chr% 0 666 1420 mkdev ttyp1 c %pts_chr% 1 666 1421 mkdev ptyp0 c %ptc_chr% 0 666 1422 mkdev ptyp1 c %ptc_chr% 1 666 1423 ;; 1424 1425ptm) 1426 mkdev ptmx c %ptm_chr% 0 666 1427 mkdev ptm c %ptm_chr% 1 666 1428 ;; 1429 1430grf*) 1431 unit=${i#grf} 1432 mkdev grf$unit c %grf_chr% $unit 666 1433 ;; 1434 1435etvme) 1436 mkdev etvme c %et_chr% 0 1437 ;; 1438 1439leo*) 1440 unit=${i#leo} 1441 mkdev leo$unit c %leo_chr% $unit 1442 ;; 1443 1444scif*) 1445 unit=${i#scif} 1446 mkdev scif$unit c %scif_chr% $unit "" "" $u_uucp 1447 ;; 1448 1449sci*) 1450 unit=${i#sci} 1451 mkdev sci$unit c %sci_chr% $unit "" "" $u_uucp 1452 ;; 1453 1454maple*) 1455 case $i in 1456 mapleA*) name="mapleA"; unit=0;; 1457 mapleB*) name="mapleB"; unit=1;; 1458 mapleC*) name="mapleC"; unit=2;; 1459 mapleD*) name="mapleD"; unit=3;; 1460 esac 1461 subunit=${i#$name} 1462 mkdev $name$subunit c %maple_chr% $(($unit * 8 + 0$subunit)) 1463 ;; 1464 1465mmem*) 1466 unit=${i#mmem} 1467 for pt in 0 # 1 2 3 4 ... 255 1468 do 1469# mkdev mmem${unit}.${pt}a b %mmem_blk% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator 1470 mkdev mmem${unit}.${pt}c b %mmem_blk% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator 1471# mkdev rmmem${unit}.${pt}a c %mmem_chr% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator 1472 mkdev rmmem${unit}.${pt}c c %mmem_chr% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator 1473 done 1474 ;; 1475 1476mlcd*) 1477 unit=${i#mlcd} 1478 for pt in 0 # 1 2 3 4 ... 255 1479 do 1480 mkdev mlcd${unit}.${pt} c %mlcd_chr% $(($unit * 256 + $pt)) 640 $g_operator 1481 done 1482 ;; 1483 1484ixpcom*) 1485 unit=${i#ixpcom} 1486 mkdev ixpcom$unit c %ixpcom_chr% $unit "" "" $u_uucp 1487 ;; 1488 1489epcom*) 1490 unit=${i#epcom} 1491 mkdev epcom$unit c %epcom_chr% $unit "" "" $u_uucp 1492 ;; 1493 1494ucbsnd) 1495 mkdev ucbsnd c %ucbsnd_chr% 0 666 1496 ;; 1497 1498adb) 1499 mkdev adb c %aed_chr% 0 666 1500 ;; 1501 1502asc*) 1503 unit=${i#asc} 1504 mkdev asc$unit c %asc_chr% $unit 666 1505 ;; 1506 1507bwtwo*) 1508 unit=${i#bwtwo} 1509 mkdev bwtwo$unit c %bwtwo_chr% $unit 666 1510 ;; 1511 1512cgtwo*) 1513 unit=${i#cgtwo} 1514 mkdev cgtwo$unit c %cgtwo_chr% $unit 666 1515 ;; 1516 1517cgthree*) 1518 unit=${i#cgthree} 1519 mkdev cgthree$unit c %cgthree_chr% $unit 666 1520 ;; 1521 1522cgfour*) 1523 unit=${i#cgfour} 1524 mkdev cgfour$unit c %cgfour_chr% $unit 666 1525 ;; 1526 1527cgsix*) 1528 unit=${i#cgsix} 1529 mkdev cgsix$unit c %cgsix_chr% $unit 666 1530 ;; 1531 1532cgeight*) 1533 unit=${i#cgeight} 1534 mkdev cgeight$unit c %cgeight_chr% $unit 666 1535 ;; 1536 1537tcx*) 1538 unit=${i#tcx} 1539 mkdev tcx$unit c %tcx_chr% $unit 666 1540 ;; 1541 1542xd*|xy*) 1543 case $i in 1544 xd*) name=xd; unit=${i#xd}; blk=%xd_blk%; chr=%xd_chr%;; 1545 xy*) name=xy; unit=${i#xy}; blk=%xy_blk%; chr=%xy_chr%;; 1546 esac 1547 %MKDISK% $name $unit $blk $chr 1548 ;; 1549 1550magma*) 1551 unit=${i#magma} 1552 if [ 0$unit -gt 3 ]; then 1553 warn "bad unit for $i: $unit" 1554 break 1555 fi 1556 for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f 1557 do 1558 case $j in 1559 [0-9]) jn=$j ;; 1560 a) jn=10 ;; 1561 b) jn=11 ;; 1562 c) jn=12 ;; 1563 d) jn=13 ;; 1564 e) jn=14 ;; 1565 f) jn=15 ;; 1566 esac 1567 mkdev tty$unit$j c %mtty_chr% $(($unit * 64 + $jn)) 1568 done 1569 mkdev bpp${unit}0 c %mbpp_chr% $(($unit * 64 + 0)) 1570 mkdev bpp${unit}1 c %mbpp_chr% $(($unit * 64 + 1)) 1571 ;; 1572 1573clcd*) 1574 unit=${i#clcd} 1575 if [ 0$unit -gt 7 ]; then 1576 warn "bad unit for $i: $unit" 1577 break 1578 fi 1579 for j in 0 1 2 3 4 5 6 7 1580 do 1581 mkdev ttyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialin)) "" "" $u_uucp 1582 mkdev dtyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialout)) "" "" $u_uucp 1583 done 1584 ;; 1585 1586spif*) 1587 unit=${i#spif} 1588 if [ 0$unit -gt 3 ]; then 1589 warn "bad unit for $i: $unit" 1590 break 1591 fi 1592 for j in 0 1 2 3 4 5 6 7; do 1593 mkdev ttyS$unit$j c 102 $(($unit * 64 + $j)) "" "" $u_uucp 1594 done 1595 mkdev bppS${unit}0 c 103 $(($unit * 64 + 0)) 1596 mkdev bppS${unit}1 c 103 $(($unit * 64 + 1)) 1597 ;; 1598 1599bpp*) 1600 unit=${i#bpp} 1601 mkdev bpp$unit c %bpp_chr% $(($unit + 0)) 1602 ;; 1603 1604tctrl*) 1605 unit=${i#tctrl} 1606 mkdev tctrl$unit c %tctrl_chr% $unit 666 1607 ;; 1608 1609bmd*) 1610 unit=${i#bmd} 1611 mkdev bmd${unit}a b %bmd_blk% $(($unit * 8 + 0)) 640 $g_operator 1612 mkdev bmd${unit}c b %bmd_blk% $(($unit * 8 + 2)) 640 $g_operator 1613 mkdev rbmd${unit}a c %bmd_chr% $(($unit * 8 + 0)) 640 $g_operator 1614 mkdev rbmd${unit}c c %bmd_chr% $(($unit * 8 + 2)) 640 $g_operator 1615 ;; 1616 1617sram) 1618 mkdev sram c %sram_chr% 0 644 1619 ;; 1620 1621pow*) 1622 unit=${i#pow} 1623 case $unit in 1624 0|1) 1625 mkdev pow${unit} c %pow_chr% ${unit} 644 1626 if [ $unit = 0 ]; then 1627 lndev pow${unit} pow 1628 fi 1629 ;; 1630 *) 1631 warn "bad unit for pow in: $i" 1632 ;; 1633 esac 1634 ;; 1635 1636ttyS*) 1637 unit=${i#ttyS} 1638 mkdev ttyS$unit c %sacom_chr% $(($unit + $dialin )) "" "" $u_uucp 1639 mkdev dtyS$unit c %sacom_chr% $(($unit + $dialout)) "" "" $u_uucp 1640 ;; 1641 1642atabus*) 1643 unit=${i#atabus} 1644 mkdev atabus$unit c %atabus_chr% $unit 644 1645 ;; 1646 1647drvctl) 1648 mkdev drvctl c %drvctl_chr% 0 644 1649 ;; 1650 1651tap*) 1652 unit=${i#tap} 1653 case "$unit" in 1654 [0-9]*) 1655 mkdev tap${unit} c %tap_chr% ${unit} 600 1656 ;; 1657 *) 1658 mkdev tap c %tap_chr% 0xfffff 600 1659 ;; 1660 esac 1661 ;; 1662 1663fw*) 1664 unit=${i#fw} 1665 for j in 0 1 2 3 1666 do 1667 mkdev fw${unit}.${j} c %fw_chr% $((${unit} * 256 + ${j})) 660 ${g_operator} 1668 mkdev fwmem${unit}.${j} c %fw_chr% $((65536 + ${unit} * 256 + ${j})) 660 ${g_operator} 1669 done 1670 ;; 1671 1672puffs) 1673 mkdev puffs c %puffs_chr% 0x7ffff 600 1674 ;; 1675 1676midevend) 1677%MI_DEVICES_END% 1678local) 1679 if [ -f "$0.local" ]; then 1680 umask 0 1681 if [ -n "$count_nodes" ]; then 1682 sh "$0.local" $opts -s all | \ 1683 while read l; do 1684 count_nodes=$((count_nodes + 1)) 1685 done 1686 else 1687 sh "$0.local" $opts all 1688 fi 1689 umask 077 1690 else 1691 warn "missing $0.local" 1692 fi 1693 ;; 1694 1695*) 1696 warn "$i: unknown device" 1697 ;; 1698 1699esac 1700done 1701 1702} 1703 1704 1705# three variants of disk partitions - max 8, max 16, max 16 with highpartoffset 1706# hack; only the one used by port is retained in final MAKEDEV script 1707# routine is called as: 1708# makedisk name unit blk chr 1709makedisk_p8() 1710{ 1711 name="$1"; unit="$2"; blk="$3"; chr="$4" 1712 1713 mkdev ${name}${unit}a b $blk $(($unit * 8 + 0)) 640 $g_operator 1714 mkdev ${name}${unit}b b $blk $(($unit * 8 + 1)) 640 $g_operator 1715 mkdev ${name}${unit}c b $blk $(($unit * 8 + 2)) 640 $g_operator 1716 mkdev ${name}${unit}d b $blk $(($unit * 8 + 3)) 640 $g_operator 1717 mkdev ${name}${unit}e b $blk $(($unit * 8 + 4)) 640 $g_operator 1718 mkdev ${name}${unit}f b $blk $(($unit * 8 + 5)) 640 $g_operator 1719 mkdev ${name}${unit}g b $blk $(($unit * 8 + 6)) 640 $g_operator 1720 mkdev ${name}${unit}h b $blk $(($unit * 8 + 7)) 640 $g_operator 1721 mkdev r${name}${unit}a c $chr $(($unit * 8 + 0)) 640 $g_operator 1722 mkdev r${name}${unit}b c $chr $(($unit * 8 + 1)) 640 $g_operator 1723 mkdev r${name}${unit}c c $chr $(($unit * 8 + 2)) 640 $g_operator 1724 mkdev r${name}${unit}d c $chr $(($unit * 8 + 3)) 640 $g_operator 1725 mkdev r${name}${unit}e c $chr $(($unit * 8 + 4)) 640 $g_operator 1726 mkdev r${name}${unit}f c $chr $(($unit * 8 + 5)) 640 $g_operator 1727 mkdev r${name}${unit}g c $chr $(($unit * 8 + 6)) 640 $g_operator 1728 mkdev r${name}${unit}h c $chr $(($unit * 8 + 7)) 640 $g_operator 1729} 1730 1731makedisk_p16() 1732{ 1733 name="$1"; unit="$2"; blk="$3"; chr="$4" 1734 1735 mkdev ${name}${unit}a b $blk $(($unit * 16 + 0)) 640 $g_operator 1736 mkdev ${name}${unit}b b $blk $(($unit * 16 + 1)) 640 $g_operator 1737 mkdev ${name}${unit}c b $blk $(($unit * 16 + 2)) 640 $g_operator 1738 mkdev ${name}${unit}d b $blk $(($unit * 16 + 3)) 640 $g_operator 1739 mkdev ${name}${unit}e b $blk $(($unit * 16 + 4)) 640 $g_operator 1740 mkdev ${name}${unit}f b $blk $(($unit * 16 + 5)) 640 $g_operator 1741 mkdev ${name}${unit}g b $blk $(($unit * 16 + 6)) 640 $g_operator 1742 mkdev ${name}${unit}h b $blk $(($unit * 16 + 7)) 640 $g_operator 1743 mkdev ${name}${unit}i b $blk $(($unit * 16 + 8)) 640 $g_operator 1744 mkdev ${name}${unit}j b $blk $(($unit * 16 + 9)) 640 $g_operator 1745 mkdev ${name}${unit}k b $blk $(($unit * 16 + 10)) 640 $g_operator 1746 mkdev ${name}${unit}l b $blk $(($unit * 16 + 11)) 640 $g_operator 1747 mkdev ${name}${unit}m b $blk $(($unit * 16 + 12)) 640 $g_operator 1748 mkdev ${name}${unit}n b $blk $(($unit * 16 + 13)) 640 $g_operator 1749 mkdev ${name}${unit}o b $blk $(($unit * 16 + 14)) 640 $g_operator 1750 mkdev ${name}${unit}p b $blk $(($unit * 16 + 15)) 640 $g_operator 1751 mkdev r${name}${unit}a c $chr $(($unit * 16 + 0)) 640 $g_operator 1752 mkdev r${name}${unit}b c $chr $(($unit * 16 + 1)) 640 $g_operator 1753 mkdev r${name}${unit}c c $chr $(($unit * 16 + 2)) 640 $g_operator 1754 mkdev r${name}${unit}d c $chr $(($unit * 16 + 3)) 640 $g_operator 1755 mkdev r${name}${unit}e c $chr $(($unit * 16 + 4)) 640 $g_operator 1756 mkdev r${name}${unit}f c $chr $(($unit * 16 + 5)) 640 $g_operator 1757 mkdev r${name}${unit}g c $chr $(($unit * 16 + 6)) 640 $g_operator 1758 mkdev r${name}${unit}h c $chr $(($unit * 16 + 7)) 640 $g_operator 1759 mkdev r${name}${unit}i c $chr $(($unit * 16 + 8)) 640 $g_operator 1760 mkdev r${name}${unit}j c $chr $(($unit * 16 + 9)) 640 $g_operator 1761 mkdev r${name}${unit}k c $chr $(($unit * 16 + 10)) 640 $g_operator 1762 mkdev r${name}${unit}l c $chr $(($unit * 16 + 11)) 640 $g_operator 1763 mkdev r${name}${unit}m c $chr $(($unit * 16 + 12)) 640 $g_operator 1764 mkdev r${name}${unit}n c $chr $(($unit * 16 + 13)) 640 $g_operator 1765 mkdev r${name}${unit}o c $chr $(($unit * 16 + 14)) 640 $g_operator 1766 mkdev r${name}${unit}p c $chr $(($unit * 16 + 15)) 640 $g_operator 1767} 1768 1769makedisk_p16high() 1770{ 1771 ho=524280 # offset for partition 9 to 16 1772 name="$1"; unit="$2"; blk="$3"; chr="$4" 1773 1774 mkdev ${name}${unit}a b $blk $(($unit * 8 + 0)) 640 $g_operator 1775 mkdev ${name}${unit}b b $blk $(($unit * 8 + 1)) 640 $g_operator 1776 mkdev ${name}${unit}c b $blk $(($unit * 8 + 2)) 640 $g_operator 1777 mkdev ${name}${unit}d b $blk $(($unit * 8 + 3)) 640 $g_operator 1778 mkdev ${name}${unit}e b $blk $(($unit * 8 + 4)) 640 $g_operator 1779 mkdev ${name}${unit}f b $blk $(($unit * 8 + 5)) 640 $g_operator 1780 mkdev ${name}${unit}g b $blk $(($unit * 8 + 6)) 640 $g_operator 1781 mkdev ${name}${unit}h b $blk $(($unit * 8 + 7)) 640 $g_operator 1782 mkdev ${name}${unit}i b $blk $(($unit * 8 + $ho + 8)) 640 $g_operator 1783 mkdev ${name}${unit}j b $blk $(($unit * 8 + $ho + 9)) 640 $g_operator 1784 mkdev ${name}${unit}k b $blk $(($unit * 8 + $ho + 10)) 640 $g_operator 1785 mkdev ${name}${unit}l b $blk $(($unit * 8 + $ho + 11)) 640 $g_operator 1786 mkdev ${name}${unit}m b $blk $(($unit * 8 + $ho + 12)) 640 $g_operator 1787 mkdev ${name}${unit}n b $blk $(($unit * 8 + $ho + 13)) 640 $g_operator 1788 mkdev ${name}${unit}o b $blk $(($unit * 8 + $ho + 14)) 640 $g_operator 1789 mkdev ${name}${unit}p b $blk $(($unit * 8 + $ho + 15)) 640 $g_operator 1790 mkdev r${name}${unit}a c $chr $(($unit * 8 + 0)) 640 $g_operator 1791 mkdev r${name}${unit}b c $chr $(($unit * 8 + 1)) 640 $g_operator 1792 mkdev r${name}${unit}c c $chr $(($unit * 8 + 2)) 640 $g_operator 1793 mkdev r${name}${unit}d c $chr $(($unit * 8 + 3)) 640 $g_operator 1794 mkdev r${name}${unit}e c $chr $(($unit * 8 + 4)) 640 $g_operator 1795 mkdev r${name}${unit}f c $chr $(($unit * 8 + 5)) 640 $g_operator 1796 mkdev r${name}${unit}g c $chr $(($unit * 8 + 6)) 640 $g_operator 1797 mkdev r${name}${unit}h c $chr $(($unit * 8 + 7)) 640 $g_operator 1798 mkdev r${name}${unit}i c $chr $(($unit * 8 + $ho + 8)) 640 $g_operator 1799 mkdev r${name}${unit}j c $chr $(($unit * 8 + $ho + 9)) 640 $g_operator 1800 mkdev r${name}${unit}k c $chr $(($unit * 8 + $ho + 10)) 640 $g_operator 1801 mkdev r${name}${unit}l c $chr $(($unit * 8 + $ho + 11)) 640 $g_operator 1802 mkdev r${name}${unit}m c $chr $(($unit * 8 + $ho + 12)) 640 $g_operator 1803 mkdev r${name}${unit}n c $chr $(($unit * 8 + $ho + 13)) 640 $g_operator 1804 mkdev r${name}${unit}o c $chr $(($unit * 8 + $ho + 14)) 640 $g_operator 1805 mkdev r${name}${unit}p c $chr $(($unit * 8 + $ho + 15)) 640 $g_operator 1806} 1807 1808# make only the very few basic disk device nodes - 'a' partition 1809# and raw partition 1810makedisk_minimal() 1811{ 1812 name=$1; unit=$2; blk=$3; chr=$4 1813 doff=%DISKMINOROFFSET% 1814 ro=%RAWDISK_OFF% 1815 rn=%RAWDISK_NAME% 1816 1817 mkdev ${name}${unit}a b $blk $(($unit * $doff + 0)) 640 $g_operator 1818 mkdev ${name}${unit}$rn b $blk $(($unit * $doff + $ro)) 640 $g_operator 1819 mkdev r${name}${unit}a c $chr $(($unit * $doff + 0)) 640 $g_operator 1820 mkdev r${name}${unit}$rn c $chr $(($unit * $doff + $ro)) 640 $g_operator 1821} 1822 1823create_mfs_dev() 1824{ 1825 ninode=$((${1-1200} * 11 / 10)) 1826 fs_size=$((8192 + 2 * 8192 + 4096 + ninode*(128+18) + 8192)) 1827 fs_size=$((fs_size/512)) 1828 [ "$fs_size" -lt 80 ] && fs_size=80 1829 1830 dev_mountpoint=${PWD:-/dev} 1831 mount_mfs -b 4096 -f 512 -s $fs_size -n $ninode -p 07555 -o union swap $dev_mountpoint 1832 1833 cd $dev_mountpoint 1834 if $do_redirect; then 1835 # Redirect stdout and stderr to console 1836 mknod -m 600 -g 0 -u 0 temp_console c 0 0 1837 exec >temp_console 2>&1 1838 rm temp_console 1839 fi 1840 echo "Created mfs $dev_mountpoint ($fs_size blocks, $ninode inodes)" 1841} 1842 1843# 1844# MAIN: If MAKEDEV_AS_LIBRARY is set, then we are being used as a 1845# function library, so just return. Otherwise, call the setup function 1846# to parse command line args and set some other variables; then call the 1847# makedev function to create requested devices. 1848# 1849[ -n "${MAKEDEV_AS_LIBRARY}" ] && return 1850 1851setup ${1+"$@"} 1852shift $((${OPTIND}-1)) 1853 1854if $do_create_mfs; then 1855 # Count inodes and create mfs file system 1856 count_nodes=0 1857 makedev ${1+"$@"} 1858 create_mfs_dev $count_nodes 1859 unset count_nodes 1860fi 1861 1862if $do_pax ; then 1863 # wrap_makedev will print an mtree specification; 1864 # pax will create device nodes. 1865 wrap_makedev makedev ${1+"$@"} | ${TOOL_PAX} -r -w -M . 1866else 1867 wrap_makedev makedev ${1+"$@"} 1868fi 1869