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