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