Annotation of src/etc/MAKEDEV.tmpl, Revision 1.145.2.4
1.1 jdolecek 1: #!/bin/sh -
1.145.2.4! yamt 2: # $NetBSD: MAKEDEV.tmpl,v 1.145.2.3 2012/10/30 18:48:58 yamt Exp $
1.1 jdolecek 3: #
1.104 apb 4: # Copyright (c) 2003,2007,2008 The NetBSD Foundation, Inc.
1.1 jdolecek 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: #
16: # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
17: # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18: # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19: # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
20: # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21: # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22: # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23: # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24: # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25: # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26: # POSSIBILITY OF SUCH DAMAGE.
27: #
28: #
29: ###########################################################################
30: #
31: # PLEASE RUN "cd ../share/man/man8 ; make makedevs"
32: # AFTER CHANGING THIS FILE, AND COMMIT THE UPDATED MANPAGE!
33: #
34: ###########################################################################
35: #
1.19 jdolecek 36: # Device "make" file. Valid special arguments:
1.1 jdolecek 37: # all makes all known devices, including local devices.
38: # Tries to make the 'standard' number of each type.
39: # init A set of devices that is used for MFS /dev by init.
40: # May be equal to "all".
41: # floppy devices to be put on install floppies
42: # ramdisk devices to be put into INSTALL kernel ramdisks.
43: # std standard devices
44: # local configuration specific devices
1.19 jdolecek 45: # wscons make wscons devices
1.1 jdolecek 46: # usbs make USB devices
47: # isdns make ISDN devices
48: #
49: # Tapes:
50: # st* SCSI tapes
51: # wt* QIC-interfaced (e.g. not SCSI) 3M cartridge tape
52: # ht* MASSBUS TM03 and TU??
53: # mt* MSCP tapes (e.g. TU81, TK50)
54: # tm* UNIBUS TM11 and TE10 emulations (e.g. Emulex TC-11)
55: # ts* UNIBUS TS11
56: # ut* UNIBUS TU45 emulations (e.g. si 9700)
57: # uu* TU58 cassettes on DL11 controller
58: #
59: # Disks:
1.145.2.2 yamt 60: # dk* wedge disk slices
1.1 jdolecek 61: # ccd* concatenated disk devices
62: # cd* SCSI or ATAPI CD-ROM
63: # cgd* cryptographic disk devices
64: # raid* RAIDframe disk devices
65: # sd* SCSI disks
66: # wd* "winchester" disk drives (ST506,IDE,ESDI,RLL,...)
67: # bmd* Nereid bank memory disks
68: # ed* IBM PS/2 ESDI disk devices
69: # fd* "floppy" disk drives (3 1/2", 5 1/4")
1.11 hannken 70: # fss* Files system snapshot devices
1.1 jdolecek 71: # gdrom* Dreamcast "gigadisc" CD-ROM drive
72: # hk* UNIBUS RK06 and RK07
73: # hp* MASSBUS RM??
74: # ld* Logical disk devices (e.g., hardware RAID)
75: # mcd* Mitsumi CD-ROM
76: # md* memory pseudo-disk devices
77: # ofdisk* OpenFirmware disk devices
78: # ra* MSCP disks (RA??, RD??)
79: # rb* 730 IDC w/ RB80 and/or RB02
80: # rd* HDC9224 RD disks on VS2000
81: # rl* UNIBUS RL02
82: # rx* MSCP floppy disk (RX33/50/...)
83: # up* other UNIBUS devices (e.g. on Emulex SC-21V controller)
84: # vnd* "file" pseudo-disks
1.39 bouyer 85: # xbd* Xen virtual disks
1.1 jdolecek 86: # xd* Xylogic 753/7053 disks
87: # xy* Xylogic 450/451 disks
88: #
89: # Pointing devices:
90: # wsmouse* wscons mouse events
91: # lms* Logitech bus mouse
92: # mms* Microsoft bus mouse
93: # qms* "quadrature mouse"
94: # pms* PS/2 mouse
95: # mouse mouse (provides events, for X11)
96: #
97: # Keyboard devices:
98: # wskbd* wscons keyboard events
99: # kbd raw keyboard (provides events, for X11)
100: # kbdctl keyboard control
101: #
102: # Terminals/Console ports:
103: # tty[01]* standard serial ports
104: # tty0* SB1250 ("sbscn") serial ports (sbmips)
105: # ttyE* wscons - Workstation console ("wscons") glass-tty emulators
106: # ttyCZ? Cyclades-Z multiport serial boards. Each "unit"
107: # makes 64 ports.
108: # ttyCY? Cyclom-Y multiport serial boards. Each "unit" makes
109: # 32 ports.
110: # ttye* ITE bitmapped consoles
111: # ttyv0 pccons
112: # ttyC? NS16550 ("com") serial ports
113: # ttyS* SA1110 serial port (hpcarm)
114: # ttyTX? TX39 internal serial ports (hpcmips)
115: # ttyB? DEC 3000 ZS8530 ("scc") serial ports (alpha)
116: # ttyA* mfc serial ports (amiga)
117: # ttyB* msc serial ports (amiga)
118: # ttyC* com style serial ports (DraCo, HyperCom) (amiga)
119: # On the DraCo, units 0 and 1 are the built-in "modem" and
120: # "mouse" ports, if configured.
121: # ttyA0 8530 Channel A (formerly ser02) (atari)
122: # ttyA1 8530 Channel B (formerly mdm02) (atari)
123: # ttyB0 UART on first 68901 (formerly mdm01) (atari)
124: # ixpcom IXP12x0 COM ports
1.34 joff 125: # epcom EP93xx COM ports
1.145.2.4! yamt 126: # plcom ARM PL01[01] serial ports
1.9 tsutsui 127: # ttyM? HP200/300 4 port serial mux interface (hp300)
1.6 jdolecek 128: # ttya "ttya" system console (luna68k)
1.1 jdolecek 129: # ttyb second system serial port (luna68k)
130: # tty* Onboard serial ports (mvme68k)
131: # On the mvme147 these are: ttyZ1, ttyZ2 and ttyZ3.
132: # On the mvme167, and '177: ttyC1, ttyC2 and ttyC3.
133: # Note that tty[CZ]0 is grabbed by the console device
134: # so is not created by default
135: # dc* PMAX 4 channel serial interface (kbd, mouse, modem, printer)
136: # scc* 82530 serial interface (pmax)
137: # ttyZ* Zilog 8530 ("zstty") serial ports
138: # tty[abcd] Built-in serial ports (sparc)
139: # tty* Z88530 serial controllers (sparc64)
140: # ttyh* SAB82532 serial controllers (sparc64)
141: # tty[a-j] Built-in serial ports (sun2, sun3)
142: # ttyC? pccons (arc)
143: # dz* UNIBUS DZ11 and DZ32 (vax)
144: # dh* UNIBUS DH11 and emulations (e.g. Able DMAX, Emulex CS-11) (vax)
145: # dmf* UNIBUS DMF32 (vax)
146: # dhu* UNIBUS DHU11 (vax)
147: # dmz* UNIBUS DMZ32 (vax)
148: # dl* UNIBUS DL11 (vax)
1.39 bouyer 149: # xencons Xen virtual console
1.1 jdolecek 150: #
151: # Terminal multiplexors:
152: # dc* 4 channel serial interface (keyboard, mouse, modem, printer)
153: # dh* UNIBUS DH11 and emulations (e.g. Able DMAX, Emulex CS-11)
154: # dhu* UNIBUS DHU11
155: # dl* UNIBUS DL11
156: # dmf* UNIBUS DMF32
157: # dmz* UNIBUS DMZ32
158: # dz* UNIBUS DZ11 and DZ32
159: # scc* 82530 serial interface
160: #
161: # Call units:
162: # dn* UNIBUS DN11 and emulations (e.g. Able Quadracall)
163: #
164: # Pseudo terminals:
1.109 apb 165: # ptm pty multiplexor device, and pts directory
1.26 christos 166: # pty* set of 16 master and slave pseudo terminals
1.1 jdolecek 167: # opty first 16 ptys, to save inodes on install media
168: # ipty first 2 ptys, for install media use only
169: #
170: # Printers:
171: # arcpp* Archimedes parallel port
172: # lpt* stock lp
173: # lpa* interruptless lp
174: # par* Amiga motherboard parallel port
1.108 hauke 175: # cpi* Macintosh Nubus CSI parallel printer card
1.1 jdolecek 176: #
177: # USB devices:
178: # usb* USB control devices
179: # uhid* USB generic HID devices
180: # ulpt* USB printer devices
181: # ugen* USB generic devices
182: # urio* USB Diamond Rio 500 devices
183: # uscanner* USB scanners
1.131 plunky 184: # ttyHS* USB Option N.V. modems
1.1 jdolecek 185: # ttyU* USB modems
1.47 skrll 186: # ttyY* USB serial adapters
1.1 jdolecek 187: #
188: # ISDN devices:
189: # isdn communication between userland isdnd and kernel
190: # isdnctl control device
191: # isdnbchan* raw b-channel access
192: # isdntel* telephony device
193: # isdnteld* telephony dialout device
194: # isdntrc* trace device
195: #
196: # Video devices:
197: # bwtwo* monochromatic frame buffer
198: # cgtwo* 8-bit color frame buffer
199: # cgthree* 8-bit color frame buffer
200: # cgfour* 8-bit color frame buffer
201: # cgsix* accelerated 8-bit color frame buffer
202: # cgeight* 24-bit color frame buffer
1.6 jdolecek 203: # etvme Tseng et-compatible cards on VME (atari)
1.1 jdolecek 204: # ik* UNIBUS interface to Ikonas frame buffer
1.6 jdolecek 205: # leo Circad Leonardo VME-bus true color (atari)
1.1 jdolecek 206: # ps* UNIBUS interface to Picture System 2
207: # qv* QVSS (MicroVAX) display
208: # tcx* accelerated 8/24-bit color frame buffer
209: #
210: # Maple bus devices:
211: # maple Maple bus control devices
212: # mlcd* Maple bus LCD devices
213: # mmem* Maple bus storage devices
214: #
1.46 kiyohara 215: # IEEE1394 bus devices:
216: # fw* IEEE1394 bus generic node access devices
217: # fwmem* IEEE1394 bus physical memory of the remote node access devices
218: #
1.1 jdolecek 219: # Special purpose devices:
220: # ad* UNIBUS interface to Data Translation A/D converter
221: # agp* AGP GART devices
222: # altq ALTQ control interface
1.56 bouyer 223: # amr* AMI MegaRaid control device
1.1 jdolecek 224: # apm power management device
225: # audio* audio devices
1.10 isaki 226: # bell* OPM bell device (x68k)
1.1 jdolecek 227: # bktr Brooktree 848/849/878/879 based TV cards
1.32 christos 228: # bpf packet filter
1.62 plunky 229: # bthub Bluetooth Device Hub control interface
1.1 jdolecek 230: # cfs* Coda file system device
231: # ch* SCSI media changer
232: # cir* Consumer IR
233: # clockctl clock control for non root users
1.87 ad 234: # cpuctl CPU control
1.1 jdolecek 235: # crypto hardware crypto access driver
236: # dmoverio hardware-assisted data movers
237: # dpt* DPT/Adaptec EATA RAID management interface
238: # dpti* DPT/Adaptec I2O RAID management interface
1.130 mrg 239: # drm* Direct Rendering Manager interface
1.139 jmcneill 240: # dtv* Digital TV interface
1.6 jdolecek 241: # fb* PMAX generic framebuffer pseudo-device
1.1 jdolecek 242: # fd file descriptors
243: # grf* graphics frame buffer device
1.128 sborrill 244: # hdaudio* High Definition audio control device
1.1 jdolecek 245: # hil HP300 HIL input devices
246: # icp ICP-Vortex/Intel RAID control interface
247: # iic* IIC bus device
1.69 ad 248: # io x86 IOPL access for COMPAT_10, COMPAT_FREEBSD
1.1 jdolecek 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
1.61 ad 255: # lockstat kernel locking statistics
1.1 jdolecek 256: # magma* Magma multiport serial/parallel cards
257: # midi* MIDI
1.145.2.3 yamt 258: # mfi* LSI MegaRAID/MegaSAS control interface
1.1 jdolecek 259: # mlx* Mylex DAC960 control interface
260: # mly* Mylex AcceleRAID/eXtremeRAID control interface
261: # np* UNIBUS Ethernet co-processor interface, for downloading.
1.135 rmind 262: # npf NPF packet filter
1.1 jdolecek 263: # nsmb* SMB requester
264: # openfirm OpenFirmware accessor
1.89 jmcneill 265: # pad* Pseudo-audio device driver
1.1 jdolecek 266: # pci* PCI bus access devices
1.31 peter 267: # pf PF packet filter
1.90 pooka 268: # putter Pass-to-Userspace Transporter
1.1 jdolecek 269: # px* PixelStamp Xserver access
270: # radio* radio devices
1.8 jdolecek 271: # random Random number generator
1.6 jdolecek 272: # rtc* RealTimeClock
1.1 jdolecek 273: # satlink* PlanetConnect satellite receiver driver
1.8 jdolecek 274: # scsibus* SCSI busses
1.1 jdolecek 275: # se* SCSI Ethernet
276: # ses* SES/SAF-TE SCSI Devices
277: # speaker PC speaker (XXX - installed)
1.10 isaki 278: # sram battery backuped memory (x68k)
1.1 jdolecek 279: # ss* SCSI scanner
280: # stic* PixelStamp interface chip
281: # sysmon System Monitoring hardware
1.38 cube 282: # tap* virtual Ethernet device
1.1 jdolecek 283: # tun* network tunnel driver
1.66 manu 284: # twa 3ware Apache control interface
1.1 jdolecek 285: # twe 3ware Escalade control interface
286: # uk* unknown SCSI device
1.121 elad 287: # veriexec Veriexec fingerprint loader
1.110 jmcneill 288: # video* video capture devices
289: # view* generic interface to graphic displays (Amiga)
1.1 jdolecek 290: # wsfont* console font control
291: # wsmux* wscons event multiplexor
1.39 bouyer 292: # xenevt Xen event interface
1.145.2.2 yamt 293: #
294: # iSCSI communication devices
295: # iscsi* iSCSI driver and /sbin/iscsid communication
296: #
297: # Trusted Computing devices
298: # tpm Trusted Platform Module
1.1 jdolecek 299:
1.15 lukem 300:
1.79 apb 301: #
1.119 apb 302: # NOTE:
1.79 apb 303: #
1.119 apb 304: # * MAKEDEV is used both as a standalone script (via "sh ./MAKEDEV
305: # all" or similar), and as a function library for MAKEDEV.local (via
306: # "MAKEDEV_AS_LIBRARY=1 . MAKEDEV"). Because of this, the script
307: # should consist almost entirely of function definitions, apart from a
308: # few lines right at the end.
309: #
310: # * MAKEDEV may be executed in an environment that is missing some
311: # common commands. For example, it may be executed from a minimal
312: # system used during installation, or it may be executed early in the
313: # boot sequence before most file systems have been mounted. It may
314: # also be executed in a cross-build environment on a non-NetBSD host.
1.79 apb 315: #
316:
317: usage()
318: {
319: cat 1>&2 << _USAGE_
1.140 jmcneill 320: Usage: ${0##*/} [-fMsu] [-m mknod] [-p pax] [-t mtree] special [...]
1.79 apb 321: Create listed special devices. Options:
322: -f Force permissions to be updated on existing devices.
1.94 apb 323: -M Create memory file system.
1.79 apb 324: -m mknod Name of mknod(8) program. [\$TOOL_MKNOD or mknod]
1.104 apb 325: -p pax Name of pax(1) program. [\$TOOL_PAX or pax]
1.79 apb 326: -s Generate mtree(8) specfile instead of creating devices.
1.104 apb 327: -t mtree Name of mtree(8) program. [\$TOOL_MTREE or mtree]
1.140 jmcneill 328: -u Don't re-create devices that already exist.
1.79 apb 329:
330: _USAGE_
331: exit 1
332: }
333:
334: # zeropad width number
335: # display number with a zero (`0') padding of width digits.
336: #
337: zeropad()
338: {
339: case $(($1 - ${#2})) in
340: 5) echo 00000$2;;
341: 4) echo 0000$2;;
342: 3) echo 000$2;;
343: 2) echo 00$2;;
344: 1) echo 0$2;;
345: 0) echo $2;;
1.104 apb 346: *) die "bad padding" ;;
1.79 apb 347: esac
348: }
349:
350: # hexprint number
351: # display (base10) number as hexadecimal
352: #
353: hexprint()
354: {
1.81 dsl 355: val="$(($1 + 0))"
356: hex=
357: set -- 0 1 2 3 4 5 6 7 8 9 a b c d e f
358: while [ "$val" -gt 0 ]; do
359: eval hex=\$$(($val % 16 + 1))\$hex
360: val="$(($val / 16))"
361: done
362: echo "${hex:-0}"
1.79 apb 363: }
364:
1.92 apb 365: # linecount multiline_string
366: # count the number of lines in the string
367: #
368: linecount()
369: {
370: local IFS='
371: ' # just a newline, no other white space between the quotes
372: set -- $1
373: echo $#
374: }
375:
1.97 apb 376: # nooutput -12 cmd [args...]
377: # run a command with stdout and/or stderr ignored.
1.105 apb 378: # "nooutput -1 cmd" is like "cmd >/dev/null";
379: # "nooutput -2 cmd" is like "{ cmd ; } 2>/dev/null";
380: # "nooutput -12 cmd" is like "{ cmd ; } >/dev/null 2>&1";
381: # except they should work even if /dev/null doesn't [yet] exist.
382: #
383: # The "{...}" wrapper used in cases where stderr is redirected
384: # serves to capture shell error messages such as "cmd: not found".
1.97 apb 385: #
386: nooutput()
387: {
388: local flags="$1" ; shift
389: local junk
390: case "$flags" in
391: "-1") junk="$( "$@" )" ;;
1.145.2.1 yamt 392: "-2") ( exec 4>&1 ; junk="$( { "$@" ; } 2>&1 1>&4 )" ) ;;
1.105 apb 393: "-12") junk="$( { "$@" ; } 2>&1 )" ;;
1.97 apb 394: *) warn "Incorrect use of nooutput" ;;
395: esac
396: }
397:
1.96 apb 398: # check_pax path_to_pax
1.104 apb 399: # Check whether pax exists and supports the command line options
400: # and input format that we will want to use.
1.96 apb 401: #
402: check_pax()
403: {
404: local pax="$1"
1.97 apb 405: echo ". type=dir optional" | nooutput -12 "${pax}" -r -w -M -pe .
1.96 apb 406: }
407:
1.104 apb 408: # check_mtree path_to_mtree
409: # Check whether mtree exists and supports the command line options
410: # and input format that we will want to use.
411: #
412: check_mtree()
413: {
414: local mtree="$1"
415: echo ". type=dir optional" | nooutput -12 "${mtree}" -e -U
416: }
417:
1.96 apb 418: # setup args...
419: # Parse command line arguments, exit on error.
420: # Callers should shift $((OPTIND - 1)) afterwards.
421: #
1.79 apb 422: setup()
423: {
424: PATH=/sbin:/usr/sbin:/bin:/usr/bin:/rescue
425:
1.145.2.3 yamt 426: : ${HOST_SH:=sh}
1.104 apb 427: : ${TOOL_MKNOD:=mknod}
428: : ${TOOL_MTREE:=mtree}
429: : ${TOOL_PAX:=pax}
1.144 apb 430: status=0
1.82 apb 431: do_create_mfs=false
1.79 apb 432: do_force=false
1.94 apb 433: do_mknod=false
1.82 apb 434: do_pax=false
1.104 apb 435: do_mtree=false
1.82 apb 436: do_redirect=false
1.79 apb 437: do_specfile=false
1.140 jmcneill 438: do_update=false
1.82 apb 439: opts=
1.140 jmcneill 440: while getopts Mfm:p:st:u ch; do
1.104 apb 441: # Note that $opts is only for options pased through to
442: # MAKEDEV.local, not for all options.
1.79 apb 443: case ${ch} in
1.84 dyoung 444: M)
1.82 apb 445: # "-M" sets do_create_mfs;
1.94 apb 446: # "-M -M" is for use from init(8), and sets do_redirect
1.82 apb 447: do_redirect=$do_create_mfs
448: do_create_mfs=true
449: ;;
450: f) do_force=true
451: opts="${opts} -f"
452: ;;
453: m) TOOL_MKNOD=${OPTARG}
1.94 apb 454: do_mknod=true
1.82 apb 455: opts="${opts} -m ${OPTARG}"
456: ;;
457: p) TOOL_PAX="${OPTARG}"
1.96 apb 458: if check_pax "${TOOL_PAX}"; then
1.83 apb 459: do_pax=true
1.94 apb 460: # do not add this to $opts; we will later
461: # add "-s" instead.
1.83 apb 462: else
463: warn "Ignored -p option:" \
464: "${TOOL_PAX} is missing or broken"
1.94 apb 465: do_mknod=true
1.83 apb 466: fi
1.82 apb 467: ;;
468: s) do_specfile=true
469: opts="${opts} -s"
470: ;;
1.104 apb 471: t) TOOL_MTREE="${OPTARG}"
472: if check_mtree "${TOOL_MTREE}"; then
473: do_mtree=true
474: # do not add this to $opts; we will later
475: # add "-s" instead.
476: else
477: warn "Ignored -t option:" \
478: "${TOOL_MTREE} is missing or broken"
479: do_mknod=true
480: fi
481: ;;
1.140 jmcneill 482: u)
483: do_update=true
484: opts="${opts} -u"
485: ;;
1.79 apb 486: *) usage ;;
487: esac
488: done
489:
490: shift $((${OPTIND} - 1))
491: [ $# -gt 0 ] || usage
492:
493: u_root="%uid_root%"
494: u_uucp="%uid_uucp%"
495: g_kmem="%gid_kmem%"
496: g_ntpd="%gid_ntpd%"
497: g_operator="%gid_operator%"
498: g_wheel="%gid_wheel%"
499: dialin=0
500: dialout=524288
501: callunit=262144
502:
503: # only allow read&write for owner by default
504: umask 077
505:
1.119 apb 506: # Set fdesc_mounted=true if the fdesc file system is mounted
507: # on the current directory (typically "/dev").
508: # Later, this will be used to suppress creation of device nodes
509: # that are supplied by the fdesc file system.
510: #
511: fdesc_mounted=false
1.79 apb 512: if [ -d fd ]; then
1.119 apb 513: # Parse the output from "mount -u -o nosuchoption .".
514: # We don't parse the output from df(1) because that's
515: # less likely to be available on install media.
516: #
517: # If the current directory is a mount point for the
518: # fdesc file system, then the expected output (whether
519: # or not the current user is root) is:
520: # mount_fdesc: -o suchoption: option not supported.
521: #
522: # If the current directory is not a mount point, then
523: # the expected output is:
524: # mount: .: unknown special file or file system.
525: #
526: # If we are not running on NetBSD, or mount(8) is not
527: # found, then we should get some other error message.
528: #
529: case "$({ LC_ALL=C mount -u -o nosuchoption . ; } 2>&1)" in
530: *mount_fdesc*) fdesc_mounted=true ;;
1.79 apb 531: esac
532: fi
533:
1.94 apb 534: # do_force requires mknod
535: if $do_force; then
1.104 apb 536: if $do_mtree || $do_pax || $do_specfile; then
537: die "-f option works only with mknod"
1.94 apb 538: fi
539: do_mknod=true
540: fi
541:
1.140 jmcneill 542: # do_force and do_update do not work together
543: if $do_force && $do_update; then
544: die "-f and -u options do not work together"
545: fi
546:
1.104 apb 547: # If no explicit method was specified on the command line or
548: # forced above, then use one of mtree, pax, or mknod, in that
549: # order of preference.
550: #
551: # mtree is preferred because it's fast and designed for the
552: # purpose. However, it's unlikely to be available early in the
553: # boot sequence, when init(8) may invoke MAKEDEV(8).
554: #
555: # pax is usually acceptable, and it's likely to be available
556: # early in the boot sequence. However, it's much slower than mtree.
557: #
558: # mknod is just very slow, because the shell has to fork for
559: # each device node.
560: #
561: if ! ( $do_mtree || $do_pax || $do_mknod || $do_specfile ); then
562: if check_mtree "${TOOL_MTREE}"; then
563: do_mtree=true
564: elif check_pax "${TOOL_PAX}"; then
1.94 apb 565: do_pax=true
566: else
567: do_mknod=true
568: fi
569: fi
570:
1.104 apb 571: # Now we need exactly one node-creation method.
572: case $(( $($do_mtree && echo 1 || echo 0) + \
573: $($do_pax && echo 1 || echo 0) + \
1.94 apb 574: $($do_mknod && echo 1 || echo 0) + \
575: $($do_specfile && echo 1 || echo 0) ))
576: in
577: 1) : OK ;;
1.104 apb 578: *) die "-m, -p, -s, and -t options are mutually exclusive" ;;
1.94 apb 579: esac
580:
581: # If we are using mknod, then decide what options to pass it.
582: if $do_mknod; then
583: MKNOD="${TOOL_MKNOD:-mknod} -F netbsd"
584: if $do_force; then
585: MKNOD="${MKNOD} -R"
586: else
587: MKNOD="${MKNOD} -r"
588: fi
589: fi
590:
1.104 apb 591: # do_mtree or do_pax internally implies do_specfile.
592: # This happens after checking for mutually-exclusive options.
593: if ($do_mtree || $do_pax) && ! $do_specfile; then
1.82 apb 594: do_specfile=true
595: opts="${opts} -s"
1.79 apb 596: fi
597: }
598:
1.144 apb 599: # specfile_before
600: # This is called before the bulk of the makedev processing,
601: # if do_specfile is set.
1.97 apb 602: #
1.144 apb 603: # It simply prints ". type=dir optional", which must be the
604: # first line of the specfile.
605: #
606: specfile_before()
1.97 apb 607: {
1.144 apb 608: echo ". type=dir optional"
609: }
610:
611: # mtree_after
612: # Output in specfile format is piped into this function.
613: #
614: # It uses mtree to create the devices defined in the specfile.
615: #
616: mtree_after()
617: {
618: nooutput -1 "${TOOL_MTREE}" -e -U
619: }
620:
621: # pax_after
622: # Output in specfile format is piped into this function.
623: #
624: # It uses pax to create the devices defined in the specfile.
625: #
626: pax_after()
627: {
628: # Run pax in an empty directory, so it pays
629: # attention only to the specfile, without being
630: # confused by the existing contents of the target
631: # directory. Without this, pax would complain "file
632: # would overwrite itself" for already-existing
633: # device nodes.
634: tmpdir=./tmp.$$
635: mkdir "${tmpdir}" || die "can't create temporary directory"
636: cd "${tmpdir}" || die "can't cd to temporary directory"
637: "${TOOL_PAX}" -r -w -M -pe ..
638: pax_status=$?
639: cd .. # back to where we started
640: rmdir "${tmpdir}"
641: return $pax_status
1.97 apb 642: }
643:
644: # makedev_main makedev_name args...
1.104 apb 645: # Perform most of the work of the main program. makedev_name
646: # is typically "makedev", but may be the name of some other
647: # makedev-like function (if we are invoked from MAKEDEV.local or
648: # some other script). The other args to this function are the
1.97 apb 649: # command line args with which the MAKEDEV (or MAKEDEV.local)
650: # script was invoked.
651: #
652: makedev_main()
653: {
654: local makedev="$1" ; shift
655:
656: # Parse command line args
657: setup ${1+"$@"}
658: shift $((${OPTIND}-1))
659:
660: if $do_create_mfs; then
661: # Count inodes and create mfs file system.
662: # The makedev call merely updates $count_nodes.
663: count_nodes=0
664: $makedev ${1+"$@"}
665: create_mfs_dev $count_nodes
666: unset count_nodes
667: fi
668:
1.144 apb 669: # Set before, middle, and after variables, so we can do
670: # something like "( $before && $middle ) | $after",
671: # except it will have to be more complex so we can capture
672: # the exit status from both sides of the pipe.
673: #
674: if $do_specfile; then
675: before=specfile_before
676: else
677: before=:
678: fi
679: middle='$makedev ${1+"$@"} && (exit $status)'
680: if $do_mtree; then
681: after=mtree_after
1.104 apb 682: elif $do_pax ; then
1.144 apb 683: after=pax_after
684: else
685: after=cat
686: fi
687:
688: # Actually perform the "{ $before && $middle } | $after" commands.
689: #
690: # We go to some trouble to ensure that, if any of
691: # $before, $middle, or $after fails, then we also
692: # exit with a non-zero status.
693: #
694: # In the block below, fd 3 is a copy of the original stdout,
695: # and fd 4 goes to a subshell that analyses the exit status
696: # status from the other commands.
697: #
698: {
699: exec 3>&1;
700: {
701: { eval "$before" && eval "$middle"; echo $? >&4; } \
702: | { eval "$after"; echo $? >&4; } \
703: } 4>&1 1>&3 \
1.104 apb 704: | (
1.144 apb 705: read status1;
706: read status2;
707: case "$status1,$status2" in
708: 0,0) exit 0;;
709: 0,*) exit $status2;;
710: *,*) exit $status1;;
711: esac
1.104 apb 712: )
1.144 apb 713: }
1.97 apb 714: }
715:
1.79 apb 716: #
717: # functions available to create nodes:
718: #
719: # mkdev name [b|c] major minor [mode{=600} [gid{=0} [uid{=0}]]]
720: # create device node `name' with the appropriate permissions
721: #
722: # lndev src target
723: # create a symlink from src to target
724: #
725: # makedir dir mode
726: # create directory with appropriate mode
727: #
728:
729: mkdev()
730: {
731: if [ -n "$count_nodes" ]; then
732: count_nodes=$((count_nodes + 1))
733: return
734: fi
1.140 jmcneill 735: if $do_update && test -e $1; then
736: return
737: fi
1.79 apb 738: if $do_specfile; then
739: case $2 in
740: b) type=block ;;
741: c) type=char ;;
742: esac
743: echo "./$1 type=${type} device=netbsd,$3,$4 mode=${5:-600} gid=${6:-$g_wheel} uid=${7:-$u_root}"
744: else
745: ${MKNOD} -m ${5:-600} -g \#${6:-$g_wheel} -u \#${7:-$u_root} $1 $2 $3 $4
746: fi
747: }
748:
749: lndev()
750: {
751: if [ -n "$count_nodes" ]; then
752: count_nodes=$((count_nodes + 1))
753: return
754: fi
1.140 jmcneill 755: if $do_update && test -e $2; then
756: return
757: fi
1.79 apb 758: if $do_specfile; then
759: echo "./$2 type=link link=$1 mode=0700 gid=$g_wheel uid=$u_root"
760: else
761: ln -f -s $1 $2
762: fi
763: }
764:
765: makedir()
766: {
767: if [ -n "$count_nodes" ]; then
768: count_nodes=$((count_nodes + 1))
769: return
770: fi
1.140 jmcneill 771: if $do_update && test -e $1; then
772: return
773: fi
1.79 apb 774: if $do_specfile; then
1.104 apb 775: echo "./$1 type=dir mode=$2 gid=$g_wheel uid=$u_root"
1.79 apb 776: else
1.97 apb 777: nooutput -2 mkdir $1
1.79 apb 778: chmod $2 $1
779: fi
780: }
781:
782: warn()
783: {
784: echo 1>&2 "$0: $*"
1.144 apb 785: status=1
1.79 apb 786: }
1.16 lukem 787:
1.104 apb 788: die()
789: {
790: echo 1>&2 "$0: $*"
791: exit 1
792: }
793:
1.15 lukem 794: # makedev special [...]
795: # the main loop
796: #
1.1 jdolecek 797: makedev()
798: {
799:
800: for i
801: do
802:
803: case $i in
804:
805: %MD_DEVICES%
1.2 jdolecek 806:
807: all)
808: makedev all_md
1.145.2.3 yamt 809: makedev std fd ptm
1.145.2.2 yamt 810: makedev dk0 dk1 dk2 dk3 dk4 dk5 dk6 dk7
811: makedev dk8 dk9 dk10 dk11 dk12 dk13 dk14 dk15
1.2 jdolecek 812: makedev ccd0 ccd1 ccd2 ccd3
813: makedev cgd0 cgd1 cgd2 cgd3
1.11 hannken 814: makedev fss0 fss1 fss2 fss3
1.2 jdolecek 815: makedev md0 md1
816: makedev raid0 raid1 raid2 raid3 raid4 raid5 raid6 raid7
817: makedev vnd0 vnd1 vnd2 vnd3
1.145.2.3 yamt 818: makedev iscsi0
1.135 rmind 819: makedev bpf npf
1.2 jdolecek 820: makedev tun0 tun1 tun2 tun3
1.101 ad 821: makedev ipl pf crypto random
1.114 ad 822: makedev lockstat clockctl cpuctl
1.145.2.2 yamt 823: makedev atabus0 atabus1 atabus2 atabus3 atabus4 atabus5 atabus6 atabus7
1.38 cube 824: makedev tap tap0 tap1 tap2 tap3
1.49 hamajima 825: makedev gpio gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7
1.89 jmcneill 826: makedev pad pad0 pad1 pad2 pad3
1.62 plunky 827: makedev bthub
1.90 pooka 828: makedev putter
1.100 riz 829: makedev drvctl
1.115 jmcneill 830: makedev video
1.139 jmcneill 831: makedev dtv
1.129 christos 832: makedev drm0
1.120 jmcneill 833: makedev altmem
1.122 ad 834: makedev zfs
1.74 apb 835: makedev local # do this last
1.2 jdolecek 836: ;;
837:
838: init)
839: # unless overridden by MD entry, this is equal to 'all'
1.145.2.3 yamt 840: makedev all opty
1.2 jdolecek 841: ;;
1.1 jdolecek 842:
843: %MI_DEVICES_BEGIN%
844: audio)
845: makedev audio0 audio1 audio2 audio3
1.128 sborrill 846: makedev hdaudio0 hdaudio1 hdaudio2 hdaudio3
1.15 lukem 847: lndev sound0 sound
848: lndev audio0 audio
849: lndev mixer0 mixer
850: lndev audioctl0 audioctl
1.1 jdolecek 851: ;;
852:
1.48 jmcneill 853: gpio)
1.49 hamajima 854: makedev gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7
1.48 jmcneill 855: lndev gpio0 gpio
856: ;;
857:
1.89 jmcneill 858: pad)
859: makedev pad0 pad1 pad2 pad3
860: lndev pad0 pad
861: ;;
862:
1.1 jdolecek 863: radio)
864: makedev radio0 radio1
1.15 lukem 865: lndev radio0 radio
1.1 jdolecek 866: ;;
867:
1.110 jmcneill 868: video)
869: makedev video0 video1 video2 video3
870: ;;
871:
1.139 jmcneill 872: dtv)
873: makedev dtv0 dtv1 dtv2 dtv3
874: ;;
875:
1.143 jmcneill 876: iic)
877: makedev iic0 iic1 iic2 iic3
878: ;;
879:
1.120 jmcneill 880: altmem)
881: makedev altmem0 altmem1
882: ;;
883:
1.1 jdolecek 884: ramdisk)
885: makedev floppy md0
886: ;;
887:
888: usbs)
889: makedev usb usb0 usb1 usb2 usb3 usb4 usb5 usb6 usb7
890: makedev uhid0 uhid1 uhid2 uhid3
891: makedev ulpt0 ulpt1
892: makedev ttyU0 ttyU1
1.47 skrll 893: makedev ttyY0 ttyY1
1.132 plunky 894: makedev ttyHS0
1.1 jdolecek 895: makedev urio0
896: makedev uscanner0 uscanner1
1.52 scw 897: makedev utoppy0 utoppy1
1.134 pooka 898: makedev ugen0 ugen1 ugen2 ugen3
1.1 jdolecek 899: ;;
900:
901: isdns)
902: makedev isdn isdnctl isdnbchan0 isdnbchan1 isdntel0 isdntel1 isdnteld0 isdnteld1 isdntrc0 isdntrc1
903: ;;
904:
905: std)
1.104 apb 906: mkdev console c %cons_chr% 0 600
907: mkdev constty c %cons_chr% 1 600
1.15 lukem 908: mkdev drum c %swap_chr% 0 640 $g_kmem
909: mkdev kmem c %mem_chr% 1 640 $g_kmem
910: mkdev mem c %mem_chr% 0 640 $g_kmem
911: mkdev null c %mem_chr% 2 666
912: mkdev zero c %mem_chr% 12 666
913: mkdev klog c %log_chr% 0 600
1.104 apb 914: mkdev ksyms c %ksyms_chr% 0 444
1.119 apb 915: if ! $fdesc_mounted; then
1.15 lukem 916: mkdev tty c %ctty_chr% 0 666
917: mkdev stdin c %filedesc_chr% 0 666
918: mkdev stdout c %filedesc_chr% 1 666
919: mkdev stderr c %filedesc_chr% 2 666
1.1 jdolecek 920: fi
921: ;;
922:
1.42 augustss 923: usb)
924: mkdev usb c %usb_chr% 255 444
925: ;;
926:
1.141 apb 927: usb[0-9]*)
1.1 jdolecek 928: unit=${i#usb}
1.42 augustss 929: usb=usb$unit
930: mkdev usb$unit c %usb_chr% $unit
1.1 jdolecek 931: ;;
932:
1.141 apb 933: uhid[0-9]*)
1.1 jdolecek 934: unit=${i#uhid}
1.15 lukem 935: mkdev uhid$unit c %uhid_chr% $unit 666
1.1 jdolecek 936: ;;
937:
1.141 apb 938: ulpt[0-9]*)
1.1 jdolecek 939: unit=${i#ulpt}
1.15 lukem 940: mkdev ulpt$unit c %ulpt_chr% $unit
941: mkdev ulpn$unit c %ulpt_chr% $(($unit + 64))
1.1 jdolecek 942: ;;
943:
1.141 apb 944: urio[0-9]*)
1.1 jdolecek 945: unit=${i#urio}
1.15 lukem 946: mkdev urio$unit c %urio_chr% $unit 666
1.1 jdolecek 947: ;;
948:
1.141 apb 949: uscanner[0-9]*)
1.1 jdolecek 950: unit=${i#uscanner}
1.15 lukem 951: mkdev uscanner$unit c %uscanner_chr% $unit
1.1 jdolecek 952: ;;
953:
1.141 apb 954: utoppy[0-9]*)
1.52 scw 955: unit=${i#utoppy}
956: mkdev utoppy$unit c %utoppy_chr% $unit
957: ;;
958:
1.141 apb 959: ttyHS[0-9]*)
1.131 plunky 960: unit=${i#ttyHS}
961: for j in 00 01 02 03 04 05 06 07 08 09 10
962: do
963: base=$(($unit * 16 + ${j#0}))
964: mkdev ttyHS$unit.$j c %uhso_chr% $(($base + $dialin )) "" "" $u_uucp
965: mkdev dtyHS$unit.$j c %uhso_chr% $(($base + $dialout )) "" "" $u_uucp
966: mkdev ctyHS$unit.$j c %uhso_chr% $(($base + $callunit)) "" "" $u_uucp
967: done
968: ;;
969:
1.141 apb 970: ttyY[0-9]*)
1.47 skrll 971: unit=${i#ttyY}
972: mkdev ttyY$unit c %ucycom_chr% $(($unit + $dialin )) "" "" $u_uucp
973: mkdev dtyY$unit c %ucycom_chr% $(($unit + $dialout )) "" "" $u_uucp
974: mkdev ctyY$unit c %ucycom_chr% $(($unit + $callunit)) "" "" $u_uucp
975: ;;
976:
1.141 apb 977: ttyU[0-9]*)
1.1 jdolecek 978: unit=${i#ttyU}
1.104 apb 979: mkdev ttyU$unit c %ucom_chr% $(($unit + $dialin )) "" "" $u_uucp
1.15 lukem 980: mkdev dtyU$unit c %ucom_chr% $(($unit + $dialout )) "" "" $u_uucp
981: mkdev ctyU$unit c %ucom_chr% $(($unit + $callunit)) "" "" $u_uucp
1.1 jdolecek 982: ;;
983:
1.141 apb 984: ugen[0-9]*)
1.1 jdolecek 985: unit=${i#ugen}
986: for j in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
987: do
1.15 lukem 988: mkdev ugen$unit.$j c %ugen_chr% $(($unit * 16 + ${j#0}))
1.1 jdolecek 989: done
990: ;;
991:
992: wscons)
993: makedev ttyE0 ttyE1 ttyE2 ttyE3 ttyE4 ttyE5 ttyE6 ttyE7
994: makedev wsmouse0 wsmouse1 wsmouse2 wsmouse3
995: makedev wskbd0 wskbd1 wskbd2 wskbd3
996: makedev wsmux0 wsmux1 wsmux2 wsmux3
997: makedev wsmouse wskbd
998: makedev ttyEcfg ttyEstat
999: makedev wsfont
1000: ;;
1001:
1002: wsmouse)
1.15 lukem 1003: mkdev wsmouse c %wsmux_chr% 0
1.1 jdolecek 1004: ;;
1005:
1006: wskbd)
1.15 lukem 1007: mkdev wskbd c %wsmux_chr% 1
1.1 jdolecek 1008: ;;
1009:
1.141 apb 1010: wsmux[0-9]*)
1.1 jdolecek 1011: unit=${i#wsmux}
1.15 lukem 1012: mkdev wsmux$unit c %wsmux_chr% $unit
1013: mkdev wsmuxctl$unit c %wsmux_chr% $(($unit + 128)) 200
1.1 jdolecek 1014: ;;
1015:
1.39 bouyer 1016: xenevt)
1017: mkdev xenevt c %xenevt_chr% 0
1018: ;;
1019:
1.54 bouyer 1020: xsd_kva)
1.55 yamt 1021: mkdev xsd_kva c %xenevt_chr% 1
1.54 bouyer 1022: ;;
1023:
1.39 bouyer 1024: xencons)
1025: mkdev xencons c %xencons_chr% 0
1026: ;;
1027:
1.1 jdolecek 1028: ttyEstat)
1.15 lukem 1029: mkdev ttyEstat c %wsdisplay_chr% 254
1.1 jdolecek 1030: ;;
1031:
1032: ttyEcfg)
1.15 lukem 1033: mkdev ttyEcfg c %wsdisplay_chr% 255
1.1 jdolecek 1034: ;;
1035:
1.141 apb 1036: ttyE[0-9]*)
1.15 lukem 1037: unit=${i#ttyE}
1038: mkdev ttyE$unit c %wsdisplay_chr% $unit
1.1 jdolecek 1039: ;;
1040:
1.141 apb 1041: wsmouse[0-9]*)
1.1 jdolecek 1042: unit=${i#wsmouse}
1.15 lukem 1043: mkdev wsmouse$unit c %wsmouse_chr% $unit
1.1 jdolecek 1044: ;;
1045:
1.141 apb 1046: wskbd[0-9]*)
1.1 jdolecek 1047: unit=${i#wskbd}
1.15 lukem 1048: mkdev wskbd$unit c %wskbd_chr% $unit
1.1 jdolecek 1049: ;;
1050:
1051: fd)
1.119 apb 1052: if ! $fdesc_mounted; then
1.142 apb 1053: # Create the "fd" subdirectory, and devices "fd/0" to "fd/63"
1.15 lukem 1054: makedir fd 755
1.1 jdolecek 1055: n=0
1.15 lukem 1056: while [ $n -lt 64 ]
1057: do
1058: mkdev fd/$n c %filedesc_chr% $n 666
1.1 jdolecek 1059: n=$(($n + 1))
1060: done
1061: fi
1062: ;;
1063:
1.141 apb 1064: wt[0-9]*)
1065: name=wt; unit=${i#wt}; chr=%wt_chr%; blk=%wt_blk%
1.1 jdolecek 1066: for sub in $unit $(($unit+8)) $(($unit+16))
1067: do
1.15 lukem 1068: mkdev $name$sub b $blk $(($sub + 0)) 660 $g_operator
1069: mkdev n$name$sub b $blk $(($sub + 4)) 660 $g_operator
1070: mkdev r$name$sub c $chr $(($sub + 0)) 660 $g_operator
1071: mkdev nr$name$sub c $chr $(($sub + 4)) 660 $g_operator
1.1 jdolecek 1072: done
1073: ;;
1074:
1.141 apb 1075: md[0-9]*)
1.4 jdolecek 1076: makedisk_minimal md ${i#md} %md_blk% %md_chr%
1.11 hannken 1077: ;;
1078:
1.141 apb 1079: fss[0-9]*)
1080: name=fss; unit=${i#fss}; blk=%fss_blk%; chr=%fss_chr%
1.15 lukem 1081: mkdev $name$unit b $blk $unit 660 $g_operator
1082: mkdev r$name$unit c $chr $unit 660 $g_operator
1.1 jdolecek 1083: ;;
1084:
1.141 apb 1085: ss[0-9]*)
1086: name=ss; unit=${i#ss}; chr=%ss_chr%
1.15 lukem 1087: mkdev $name$unit c $chr $(($unit * 16 + 0)) 640 $g_operator
1088: mkdev n$name$unit c $chr $(($unit * 16 + 1)) 640 $g_operator
1089: mkdev en$name$unit c $chr $(($unit * 16 + 3)) 640 $g_operator
1.1 jdolecek 1090: ;;
1091:
1.141 apb 1092: ccd[0-9]*|cgd[0-9]*|raid[0-9]*|vnd[0-9]*)
1.1 jdolecek 1093: case $i in
1.15 lukem 1094: ccd*) name=ccd; unit=${i#ccd}; blk=%ccd_blk%; chr=%ccd_chr%;;
1095: cgd*) name=cgd; unit=${i#cgd}; blk=%cgd_blk%; chr=%cgd_chr%;;
1096: raid*) name=raid; unit=${i#raid}; blk=%raid_blk%; chr=%raid_chr%;;
1097: vnd*) name=vnd; unit=${i#vnd}; blk=%vnd_blk%; chr=%vnd_chr%;;
1.1 jdolecek 1098: esac
1.5 jdolecek 1099: %MKDISK% $name $unit $blk $chr
1100: ;;
1101:
1.141 apb 1102: sd[0-9]*)
1.5 jdolecek 1103: name=sd; unit=${i#sd}; blk=%sd_blk%; chr=%sd_chr%
1.1 jdolecek 1104: %MKDISK% $name $unit $blk $chr
1105: ;;
1106:
1.141 apb 1107: ace[0-9]*)
1.137 pooka 1108: name=ace; unit=${i#ace}; blk=%ace_blk%; chr=%ace_chr%
1109: %MKDISK% $name $unit $blk $chr
1110: ;;
1111:
1.141 apb 1112: eflash[0-9]*)
1.137 pooka 1113: name=eflash; unit=${i#eflash}; blk=%eflash_blk%; chr=%eflash_chr%
1114: %MKDISK% $name $unit $blk $chr
1115: ;;
1116:
1.141 apb 1117: wd[0-9]*)
1.1 jdolecek 1118: name=wd; unit=${i#wd}; blk=%wd_blk%; chr=%wd_chr%
1119: %MKDISK% $name $unit $blk $chr
1120: ;;
1121:
1.141 apb 1122: fd[0-9]*)
1.1 jdolecek 1123: name=fd; unit=${i#fd}; blk=%fd_blk%; chr=%fd_chr%
1124: %MKDISK% $name $unit $blk $chr
1125: ;;
1126:
1.141 apb 1127: ld[0-9]*)
1.1 jdolecek 1128: name=ld; unit=${i#ld}; blk=%ld_blk%; chr=%ld_chr%
1129: %MKDISK% $name $unit $blk $chr
1130: ;;
1131:
1.141 apb 1132: flash[0-9]*)
1.138 ahoka 1133: unit=${i#flash}
1134: flash=flash$unit
1135: mkdev flash$unit b %flash_blk% $unit
1136: mkdev rflash$unit c %flash_chr% $unit
1137: ;;
1138:
1.141 apb 1139: altmem[0-9]*)
1.120 jmcneill 1140: name=altmem; unit=${i#altmem}; blk=%altmem_blk%; chr=%altmem_chr%
1141: %MKDISK% $name $unit $blk $chr
1142: ;;
1143:
1.86 martti 1144: bio)
1145: mkdev bio c %bio_chr% 0
1146: ;;
1147:
1.141 apb 1148: ed[0-9]*)
1.1 jdolecek 1149: name=ed; unit=${i#ed}; blk=%ed_blk%; chr=%ed_chr%
1150: %MKDISK% $name $unit $blk $chr
1151: ;;
1152:
1.141 apb 1153: ofdisk[0-9]*)
1.1 jdolecek 1154: name=ofdisk; unit=${i#ofdisk}; blk=%ofdisk_blk%; chr=%ofdisk_chr%
1155: %MKDISK% $name $unit $blk $chr
1156: ;;
1157:
1.141 apb 1158: xbd[0-9]*)
1.39 bouyer 1159: name=xbd; unit=${i#xbd}; blk=%xbd_blk%; chr=%xbd_chr%
1160: %MKDISK% $name $unit $blk $chr
1161: ;;
1162:
1.141 apb 1163: dk[0-9]*)
1.60 martin 1164: name=dk; unit=${i#dk}; blk=%dk_blk%; chr=%dk_chr%
1.142 apb 1165: mkdev r$name$unit c $chr $unit 0640 $g_operator
1166: mkdev $name$unit b $blk $unit 0640 $g_operator
1.59 christos 1167: ;;
1.84 dyoung 1168:
1.141 apb 1169: ttyCY[0-9]*)
1.142 apb 1170: # Each unit number creates 32 pairs of {tty,dty} device nodes:
1171: # ttyCY0 => device nodes [td]tyCY000 to [td]tyCY031;
1172: # ttyCY1 => device nodes [td]tyCY032 to [td]tyCY063;
1.25 christos 1173: name=tyCY; chr=%cy_chr%; off=32
1.15 lukem 1174: unit=${i#t${name}}
1175: minor=$(($unit * $off))
1176: eminor=$(($minor + $off))
1177: while [ $minor -lt $eminor ]
1178: do
1.50 dsl 1179: nminor=000$minor
1180: nminor=${nminor#${nminor%???}}
1.15 lukem 1181: mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp
1182: mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp
1.1 jdolecek 1183: minor=$(($minor + 1))
1184: done
1185: ;;
1186:
1.141 apb 1187: ttyCZ[0-9]*)
1.142 apb 1188: # Each unit number creates 64 pairs of {tty,dty} device nodes:
1189: # ttyCZ0 => device nodes [td]tyCZ0000 to [td]tyCZ0063;
1190: # ttyCZ1 => device nodes [td]tyCZ0064 to [td]tyCZ0127;
1.25 christos 1191: name=tyCZ; chr=%cz_chr%; off=64
1.15 lukem 1192: unit=${i#t${name}}
1193: minor=$(($unit * $off))
1194: eminor=$(($minor + $off))
1195: while [ $minor -lt $eminor ]
1196: do
1.50 dsl 1197: nminor=0000$minor
1198: nminor=${nminor#${nminor%????}}
1.15 lukem 1199: mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp
1200: mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp
1.1 jdolecek 1201: minor=$(($minor + 1))
1202: done
1203: ;;
1204:
1.15 lukem 1205:
1.4 jdolecek 1206: tty[0-9]|tty0[0-9])
1207: # some archs have built-in zstty (major %zstty_chr%) instead
1208: # of NS16550; create ttyZ* and hardlink as [dt]ty0*; this
1209: # needs to be before com entry, for archs which have both
1210: unit=${i#tty}
1211: unit=$(($unit + 0))
1212: makedev ttyZ${unit}
1.15 lukem 1213: lndev ttyZ$unit tty0${unit}
1214: lndev dtyZ$unit dty0${unit}
1.4 jdolecek 1215: ;;
1216:
1.145 apb 1217: tty[0-9]*)
1.15 lukem 1218: unit=${i#tty}
1.50 dsl 1219: ounit=00$unit
1220: ounit=${ounit#${ounit%??}}
1.15 lukem 1221: mkdev tty$ounit c %com_chr% $(($unit + $dialin )) "" "" $u_uucp
1222: mkdev dty$ounit c %com_chr% $(($unit + $dialout)) "" "" $u_uucp
1.1 jdolecek 1223: ;;
1224:
1.141 apb 1225: ttyC[0-9]*)
1.15 lukem 1226: # some archs call com_chr ttyC traditionally
1227: unit=${i#ttyC}; name=ttyC; dname=dtyC; chr=%com_chr%
1228: mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp
1229: mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp
1.1 jdolecek 1230: ;;
1231:
1.141 apb 1232: ttyh[0-9]*)
1.15 lukem 1233: unit=${i#ttyh}; name=ttyh; dname=dtyh; chr=%sabtty_chr%
1234: mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp
1235: mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp
1236: ;;
1237:
1.141 apb 1238: ttyTX[0-9]*)
1.15 lukem 1239: unit=${i#ttyTX}; name=ttyTX0; dname=dtyTX0; chr=%txcom_chr%
1240: mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp
1241: mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp
1.1 jdolecek 1242: ;;
1243:
1.141 apb 1244: ttyZ[0-9]*)
1.15 lukem 1245: unit=${i#ttyZ}; name=ttyZ; dname=dtyZ; chr=%zstty_chr%
1246: mkdev $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp
1247: mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp
1.1 jdolecek 1248: ;;
1249:
1250: opty)
1.142 apb 1251: # Create 16 device nodes, [pt]typ0 to [pt]typf,
1252: # same as "MAKEDEV pty0".
1.1 jdolecek 1253: for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f
1254: do
1255: case $j in
1256: [0-9]) jn=$j ;;
1257: a) jn=10 ;;
1258: b) jn=11 ;;
1259: c) jn=12 ;;
1260: d) jn=13 ;;
1261: e) jn=14 ;;
1262: f) jn=15 ;;
1263: esac
1.15 lukem 1264: mkdev ttyp$j c %pts_chr% $jn 666
1265: mkdev ptyp$j c %ptc_chr% $jn 666
1.1 jdolecek 1266: done
1267: ;;
1268:
1.141 apb 1269: pty[0-9]*)
1.142 apb 1270: # Each unit number creates up to 16 pairs of {tty,pty} device nodes:
1271: # pty0 => 16 pairs, [tp]typ0 to [tp]typf
1272: # pty1 => 16 pairs, [tp]tyq0 to [tp]tyqf
1273: # pty16 => 16 pairs, [tp]typg to [tp]typv
1274: # pty17 => 16 pairs, [tp]typw to [tp]typL
1275: # pty18 => 14 pairs, [tp]typM to [tp]typZ
1.145.2.3 yamt 1276: warn "$i: creating BSD style tty nodes with ptyfs is a security issue"
1.1 jdolecek 1277: class=${i#pty}
1.26 christos 1278: d1="p q r s t u v w x y z P Q R S T"
1279: if [ "$class" -ge 64 ]
1280: then
1281: warn "$i: pty unit must be between 0 and 63"
1.1 jdolecek 1282: continue
1.26 christos 1283: elif [ "$class" -lt 16 ]
1284: then
1.142 apb 1285: # pty[p-zP-T][0-9a-f]
1.26 christos 1286: offset=0
1287: mult=0
1288: d2="0 1 2 3 4 5 6 7 8 9 a b c d e f"
1289: else
1.142 apb 1290: # pty[p-zP-T][g-zA-Z]
1.26 christos 1291: class=$(($class - 16))
1292: offset=256
1293: mult=2
1294: 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"
1.1 jdolecek 1295: fi
1.26 christos 1296: start=$(($class * 16))
1297: set -- $d2
1298: nt=$#
1299: s1=$(($start / $nt))
1300: set -- $d1
1301: shift $s1
1302: t1=$1
1303: if [ "$t1" = v ]; then
1.16 lukem 1304: warn "$i: pty unit conflicts with console ttyv0 device"
1.1 jdolecek 1305: continue
1306: fi
1.51 christos 1307: s2=$(($start % ($nt - $s1 * $mult)))
1.26 christos 1308: set -- $d2
1309: shift $s2
1310: t2=$1
1311: unit=$(($start + $offset - $s1 * $mult))
1312: end=$(($unit + 16))
1313: while [ "$unit" -lt "$end" ]
1314: do
1315: mkdev tty$t1$t2 c %pts_chr% $unit 666
1316: mkdev pty$t1$t2 c %ptc_chr% $unit 666
1.1 jdolecek 1317: shift
1.26 christos 1318: t2=$1
1319: if [ -z "$t2" ]
1320: then
1321: break
1.1 jdolecek 1322: fi
1323: unit=$(($unit + 1))
1324: done
1325: ;;
1326:
1.141 apb 1327: stic[0-9]*)
1.4 jdolecek 1328: unit=${i#stic}
1.15 lukem 1329: mkdev stic$unit c %stic_chr% $unit
1.4 jdolecek 1330: ;;
1331:
1.141 apb 1332: st[0-9]*)
1333: name=st; unit=${i#st}; chr=%st_chr%; blk=%st_blk%
1.15 lukem 1334: mkdev $name$unit b $blk $(($unit * 16 + 0)) 660 $g_operator
1335: mkdev n$name$unit b $blk $(($unit * 16 + 1)) 660 $g_operator
1336: mkdev e$name$unit b $blk $(($unit * 16 + 2)) 660 $g_operator
1337: mkdev en$name$unit b $blk $(($unit * 16 + 3)) 660 $g_operator
1338: mkdev r$name$unit c $chr $(($unit * 16 + 0)) 660 $g_operator
1339: mkdev nr$name$unit c $chr $(($unit * 16 + 1)) 660 $g_operator
1340: mkdev er$name$unit c $chr $(($unit * 16 + 2)) 660 $g_operator
1341: mkdev enr$name$unit c $chr $(($unit * 16 + 3)) 660 $g_operator
1.1 jdolecek 1342: ;;
1343:
1.141 apb 1344: ses[0-9]*|ch[0-9]*|uk[0-9]*)
1.1 jdolecek 1345: case $i in
1.15 lukem 1346: ch*) name=ch; unit=${i#ch}; chr=%ch_chr%;;
1347: uk*) name=uk; unit=${i#uk}; chr=%uk_chr%;;
1348: ses*) name=ses; unit=${i#ses}; chr=%ses_chr%;;
1.1 jdolecek 1349: esac
1.15 lukem 1350: mkdev $name$unit c $chr $unit 640 $g_operator
1.1 jdolecek 1351: ;;
1352:
1.141 apb 1353: cd[0-9]*)
1.106 apb 1354: makedisk_minimal cd ${i#cd} %cd_blk% %cd_chr%
1.4 jdolecek 1355: ;;
1356:
1.141 apb 1357: mcd[0-9]*)
1.4 jdolecek 1358: makedisk_minimal mcd ${i#mcd} %mcd_blk% %mcd_chr%
1.1 jdolecek 1359: ;;
1360:
1.141 apb 1361: gdrom[0-9]*)
1.4 jdolecek 1362: makedisk_minimal gdrom ${i#gdrom} %gdrom_blk% %gdrom_chr%
1.1 jdolecek 1363: ;;
1364:
1.141 apb 1365: lpt[0-9]*|lpa[0-9]*)
1.1 jdolecek 1366: case $i in
1.104 apb 1367: lpt*) name=lpt; unit=${i#lpt}; chr=%lpt_chr%; flags=0;;
1368: lpa*) name=lpa; unit=${i#lpa}; chr=%lpt_chr%; flags=128;;
1.1 jdolecek 1369: esac
1.15 lukem 1370: mkdev $name$unit c $chr $(($unit + $flags))
1.21 jdolecek 1371: mkdev lpt${unit}ctl c $chr $(($unit + 256))
1.1 jdolecek 1372: ;;
1373:
1.32 christos 1374: bpf)
1375: mkdev bpf c %bpf_chr% 0
1.36 manu 1376: lndev bpf bpf0
1.32 christos 1377: ;;
1378:
1.135 rmind 1379: npf)
1380: mkdev npf c %npf_chr% 0
1381: ;;
1382:
1.62 plunky 1383: bthub)
1384: mkdev bthub c %bthub_chr% 0
1.53 gdamore 1385: ;;
1386:
1.141 apb 1387: tun[0-9]*)
1.40 jdolecek 1388: unit=${i#tun}
1389: mkdev tun$unit c %tun_chr% $unit
1390: ;;
1391:
1.141 apb 1392: joy[0-9]*)
1.40 jdolecek 1393: unit=${i#joy}
1394: mkdev joy$unit c %joy_chr% $unit
1.1 jdolecek 1395: ;;
1396:
1397: ipl)
1.15 lukem 1398: mkdev ipl c %ipl_chr% 0
1399: mkdev ipnat c %ipl_chr% 1
1400: mkdev ipstate c %ipl_chr% 2
1401: mkdev ipauth c %ipl_chr% 3
1.58 martti 1402: mkdev ipsync c %ipl_chr% 4
1403: mkdev ipscan c %ipl_chr% 5
1404: mkdev iplookup c %ipl_chr% 6
1.1 jdolecek 1405: ;;
1406:
1407: pf)
1.15 lukem 1408: mkdev pf c %pf_chr% 0
1.1 jdolecek 1409: ;;
1410:
1411: crypto)
1.15 lukem 1412: mkdev crypto c %crypto_chr% 0 666
1.1 jdolecek 1413: ;;
1414:
1.72 dyoung 1415: cmos)
1416: mkdev cmos c %cmos_chr% 0 644
1417: ;;
1418:
1.1 jdolecek 1419: speaker)
1.15 lukem 1420: mkdev speaker c %spkr_chr% 0
1.1 jdolecek 1421: ;;
1422:
1.61 ad 1423: lockstat)
1424: mkdev lockstat c %lockstat_chr% 0
1425: ;;
1426:
1.87 ad 1427: cpuctl)
1428: mkdev cpuctl c %cpuctl_chr% 0 666
1429: ;;
1430:
1.141 apb 1431: audio|audio[0-9]*)
1.1 jdolecek 1432: unit=${i#audio}
1433: audio=audio$unit
1434: sound=sound$unit
1435: mixer=mixer$unit
1436: audioctl=audioctl$unit
1.15 lukem 1437: : ${unit:-0}
1.104 apb 1438: mkdev $sound c %audio_chr% $(($unit + 0)) 666
1439: mkdev $audio c %audio_chr% $(($unit + 128)) 666
1440: mkdev $mixer c %audio_chr% $(($unit + 16)) 666
1.15 lukem 1441: mkdev $audioctl c %audio_chr% $(($unit + 192)) 666
1.1 jdolecek 1442: ;;
1443:
1.141 apb 1444: hdaudio[0-9]*)
1.128 sborrill 1445: unit=${i#hdaudio}
1446: mkdev hdaudio$unit c %hdaudio_chr% $unit 644
1447: ;;
1448:
1.141 apb 1449: gpio[0-9]*)
1.48 jmcneill 1450: unit=${i#gpio}
1451: mkdev gpio$unit c %gpio_chr% $unit 644
1452: ;;
1453:
1.141 apb 1454: rmidi[0-9]*)
1.1 jdolecek 1455: unit=${i#rmidi}
1.15 lukem 1456: mkdev rmidi$unit c %midi_chr% $unit 666
1.1 jdolecek 1457: ;;
1458:
1.141 apb 1459: music|music[0-9]*)
1.1 jdolecek 1460: unit=${i#music}
1.15 lukem 1461: : ${unit:-0}
1462: mkdev music$unit c %sequencer_chr% $(($unit + 0)) 666
1.104 apb 1463: mkdev sequencer$unit c %sequencer_chr% $(($unit + 128)) 666
1.1 jdolecek 1464: ;;
1465:
1.141 apb 1466: radio|radio[0-9]*)
1.1 jdolecek 1467: unit=${i#radio}
1.15 lukem 1468: : ${unit:-0}
1469: mkdev radio$unit c %radio_chr% $unit 666
1470: ;;
1471:
1.141 apb 1472: video|video[0-9]*)
1.110 jmcneill 1473: unit=${i#video}
1474: : ${unit:-0}
1475: mkdev video$unit c %video_chr% $unit 666
1476: ;;
1477:
1.141 apb 1478: dtv[0-9]*)
1.139 jmcneill 1479: unit=${i#dtv}
1480: makedir dvb 755
1481: makedir dvb/adapter$unit 755
1482: mkdev dvb/adapter$unit/frontend0 c %dtv_chr% $(($unit + 0)) 666
1483: mkdev dvb/adapter$unit/demux0 c %dtv_chr% $(($unit + 16)) 666
1484: mkdev dvb/adapter$unit/dvr0 c %dtv_chr% $(($unit + 32)) 666
1485: ;;
1486:
1.143 jmcneill 1487: iic[0-9]*)
1488: unit=${i#iic}
1489: : ${unit:-0}
1490: mkdev iic$unit c %iic_chr% $unit 600
1491: ;;
1492:
1.141 apb 1493: amr[0-9]*)
1.56 bouyer 1494: unit=${i#amr}
1495: mkdev amr$unit c %amr_chr% $unit
1496: ;;
1497:
1.15 lukem 1498: apm)
1499: mkdev apm c %apm_chr% 0 644
1500: mkdev apmctl c %apm_chr% 8 644
1501: ;;
1502:
1503: apm)
1504: # hpcmips uses `apmdev_chr' instead of `apm_chr'
1505: mkdev apm c %apmdev_chr% 0 644
1506: mkdev apmctl c %apmdev_chr% 8 644
1.4 jdolecek 1507: ;;
1508:
1.141 apb 1509: satlink[0-9]*)
1.1 jdolecek 1510: unit=${i#satlink}
1.15 lukem 1511: mkdev satlink$unit c %satlink_chr% $unit 444
1.1 jdolecek 1512: ;;
1513:
1514: random)
1.15 lukem 1515: mkdev random c %rnd_chr% 0 444
1516: mkdev urandom c %rnd_chr% 1 644
1.1 jdolecek 1517: ;;
1518:
1.88 gdt 1519: cfs)
1520: makedev cfs0
1521: ;;
1522:
1.141 apb 1523: cfs[0-9]*)
1.1 jdolecek 1524: unit=${i#cfs}
1.15 lukem 1525: mkdev cfs$unit c %vcoda_chr% $unit
1.1 jdolecek 1526: ;;
1527:
1528: sysmon)
1.15 lukem 1529: mkdev sysmon c %sysmon_chr% 0 644
1530: mkdev watchdog c %sysmon_chr% 1 644
1531: mkdev power c %sysmon_chr% 2 640
1.1 jdolecek 1532: ;;
1533:
1.141 apb 1534: scsibus[0-9]*)
1.1 jdolecek 1535: unit=${i#scsibus}
1.15 lukem 1536: mkdev scsibus$unit c %scsibus_chr% $unit 644
1.1 jdolecek 1537: ;;
1538:
1539: bktr)
1540: makedev bktr0 bktr1
1.15 lukem 1541: lndev bktr0 bktr
1542: lndev tuner0 tuner
1543: lndev vbi0 vbi
1.1 jdolecek 1544: ;;
1545:
1.141 apb 1546: bktr[0-9]*)
1.1 jdolecek 1547: unit=${i#bktr}
1.15 lukem 1548: mkdev bktr$unit c %bktr_chr% $(($unit + 0)) 444
1549: mkdev tuner$unit c %bktr_chr% $(($unit + 16)) 444
1550: mkdev vbi$unit c %bktr_chr% $(($unit + 32)) 444
1.1 jdolecek 1551: ;;
1552:
1.69 ad 1553: io)
1554: mkdev io c %mem_chr% 14 600
1555: ;;
1556:
1.141 apb 1557: iop[0-9]*)
1.1 jdolecek 1558: unit=${i#iop}
1.15 lukem 1559: mkdev iop$unit c %iop_chr% $unit
1.1 jdolecek 1560: ;;
1561:
1.145.2.3 yamt 1562: mfi[0-9]*)
1563: unit=${i#mfi}
1564: mkdev mfi$unit c %mfi_chr% $unit
1565: ;;
1566:
1.141 apb 1567: mlx[0-9]*)
1.1 jdolecek 1568: unit=${i#mlx}
1.15 lukem 1569: mkdev mlx$unit c %mlx_chr% $unit
1.1 jdolecek 1570: ;;
1571:
1.141 apb 1572: mly[0-9]*)
1.1 jdolecek 1573: unit=${i#mly}
1.15 lukem 1574: mkdev mly$unit c %mly_chr% $unit
1.1 jdolecek 1575: ;;
1576:
1.141 apb 1577: twa[0-9]*)
1.66 manu 1578: unit=${i#twa}
1579: mkdev twa$unit c %twa_chr% $unit
1580: ;;
1581:
1.141 apb 1582: twe[0-9]*)
1.1 jdolecek 1583: unit=${i#twe}
1.15 lukem 1584: mkdev twe$unit c %twe_chr% $unit
1.1 jdolecek 1585: ;;
1586:
1.141 apb 1587: icp[0-9]*)
1.1 jdolecek 1588: unit=${i#icp}
1.15 lukem 1589: mkdev icp$unit c %icp_chr% $unit
1.1 jdolecek 1590: ;;
1591:
1.141 apb 1592: agp[0-9]*)
1.1 jdolecek 1593: unit=${i#agp}
1.15 lukem 1594: mkdev agp$unit c %agp_chr% $unit 644
1595: if [ "$unit" = "0" ]; then
1596: lndev agp$unit agpgart
1597: fi
1.1 jdolecek 1598: ;;
1599:
1.141 apb 1600: pci[0-9]*)
1.1 jdolecek 1601: unit=${i#pci}
1.136 jakllsch 1602: mkdev pci$unit c %pci_chr% $unit 640
1.1 jdolecek 1603: ;;
1604:
1.141 apb 1605: dpti[0-9]*)
1.1 jdolecek 1606: unit=${i#dpti}
1.15 lukem 1607: mkdev dpti$unit c %dpti_chr% $unit
1.1 jdolecek 1608: ;;
1609:
1.141 apb 1610: dpt[0-9]*)
1.1 jdolecek 1611: unit=${i#dpt}
1.15 lukem 1612: mkdev dpt$unit c %dpt_chr% $unit
1.1 jdolecek 1613: ;;
1614:
1615: altq)
1.15 lukem 1616: makedir altq 755
1.1 jdolecek 1617: unit=0
1.133 jakllsch 1618: for dev in altq cbq wfq afm fifoq red rio localq hfsc cdnr blue priq jobs
1.15 lukem 1619: do
1620: mkdev altq/$dev c %altq_chr% $unit 644
1.1 jdolecek 1621: unit=$(($unit + 1))
1622: done
1623: ;;
1624:
1625: isdn)
1.15 lukem 1626: mkdev isdn c %isdn_chr% 0
1.1 jdolecek 1627: ;;
1628:
1629: isdnctl)
1.15 lukem 1630: mkdev isdnctl c %isdnctl_chr% 0
1.1 jdolecek 1631: ;;
1632:
1.141 apb 1633: isdnbchan[0-9]*)
1.1 jdolecek 1634: unit=${i#isdnbchan}
1.15 lukem 1635: mkdev isdnbchan$unit c %isdnbchan_chr% $unit
1.1 jdolecek 1636: ;;
1637:
1.141 apb 1638: isdnteld[0-9]*)
1.1 jdolecek 1639: unit=${i#isdnteld}
1.15 lukem 1640: mkdev isdnteld$unit c %isdntel_chr% $(($unit + 64))
1.1 jdolecek 1641: ;;
1642:
1.141 apb 1643: isdntel[0-9]*)
1.1 jdolecek 1644: unit=${i#isdntel}
1.15 lukem 1645: mkdev isdntel$unit c %isdntel_chr% $unit
1.1 jdolecek 1646: ;;
1647:
1.141 apb 1648: isdntrc[0-9]*)
1.1 jdolecek 1649: unit=${i#isdntrc}
1.15 lukem 1650: mkdev isdntrc$unit c %isdntrc_chr% $unit
1.1 jdolecek 1651: ;;
1652:
1653: wsfont)
1.15 lukem 1654: mkdev wsfont c %wsfont_chr% 0
1.1 jdolecek 1655: ;;
1656:
1.141 apb 1657: cir[0-9]*)
1.1 jdolecek 1658: unit=${i#cir}
1.15 lukem 1659: mkdev cir$unit c %cir_chr% $unit 666
1.1 jdolecek 1660: ;;
1661:
1.141 apb 1662: irframe[0-9]*)
1.1 jdolecek 1663: unit=${i#irframe}
1.15 lukem 1664: mkdev irframe$unit c %irframe_chr% $unit
1.1 jdolecek 1665: ;;
1666:
1.141 apb 1667: fcom[0-9]*)
1.1 jdolecek 1668: unit=${i#fcom}
1.15 lukem 1669: mkdev fcom$unit c %fcom_chr% $unit "" "" $u_uucp
1.1 jdolecek 1670: ;;
1671:
1672: openfirm)
1.15 lukem 1673: mkdev openfirm c %openfirm_chr% 0 444
1.1 jdolecek 1674: ;;
1675:
1.141 apb 1676: pad[0-9]*)
1.89 jmcneill 1677: unit=${i#pad}
1678: mkdev pad$unit c %pad_chr% $unit 444
1679: ;;
1680:
1.1 jdolecek 1681: nvram)
1.15 lukem 1682: mkdev nvram c %nvram_chr% 0 644
1.1 jdolecek 1683: ;;
1684:
1685: rtc)
1.15 lukem 1686: mkdev rtc c %rtc_chr% 0 644
1.1 jdolecek 1687: ;;
1688:
1689: clockctl)
1.15 lukem 1690: mkdev clockctl c %clockctl_chr% 0 660 $g_ntpd
1.1 jdolecek 1691: ;;
1692:
1693: nsmb)
1694: makedev nsmb0 nsmb1 nsmb2 nsmb3
1695: ;;
1696:
1.141 apb 1697: nsmb[0-9]*)
1.1 jdolecek 1698: unit=${i#nsmb}
1.15 lukem 1699: mkdev nsmb$unit c %nsmb_chr% $unit 644
1.1 jdolecek 1700: ;;
1701:
1702: kttcp)
1.15 lukem 1703: mkdev kttcp c %kttcp_chr% 0
1.1 jdolecek 1704: ;;
1705:
1706: dmoverio)
1.15 lukem 1707: mkdev dmoverio c %dmoverio_chr% 0 644
1.1 jdolecek 1708: ;;
1709:
1710: veriexec)
1.45 elad 1711: mkdev veriexec c %veriexec_chr% 0 600
1.1 jdolecek 1712: ;;
1713:
1.141 apb 1714: ttyv[0-9]*)
1.15 lukem 1715: unit=${i#ttyv}
1716: mkdev ttyv$unit c %pc_chr% $unit
1.1 jdolecek 1717: ;;
1718:
1.15 lukem 1719: # arm, acorn32
1.141 apb 1720: ttyv[0-9]*)
1.15 lukem 1721: unit=${i#ttyv}
1722: mkdev ttyv$unit c %physcon_chr% $unit
1.4 jdolecek 1723: ;;
1724:
1.141 apb 1725: arcpp[0-9]*)
1.15 lukem 1726: unit=${i#arcpp}
1727: mkdev arcpp$unit c %arcpp_chr% $unit
1.1 jdolecek 1728: ;;
1729:
1.141 apb 1730: par[0-9]*)
1.15 lukem 1731: unit=${i#par}
1.1 jdolecek 1732: case $unit in
1733: 0)
1.15 lukem 1734: mkdev par$unit c %par_chr% $unit
1.1 jdolecek 1735: ;;
1736: *)
1.16 lukem 1737: warn "bad unit for par in: $i"
1.1 jdolecek 1738: ;;
1739: esac
1740: ;;
1741:
1.141 apb 1742: cpi[0-9]*)
1.108 hauke 1743: unit=${i#cpi}
1744: mkdev cpi$unit c %cpi_chr% $unit
1745: ;;
1746:
1.141 apb 1747: ite[0-9]*|ttye[0-9]*)
1.4 jdolecek 1748: case $i in
1749: ite*) unit=${i#ite};;
1750: ttye*) unit=${i#ttye};;
1751: esac
1.104 apb 1752: mkdev ttye$unit c %ite_chr% $unit
1.1 jdolecek 1753: ;;
1754:
1.141 apb 1755: pms[0-9]*)
1.4 jdolecek 1756: unit=${i#pms}
1.15 lukem 1757: mkdev pms$unit c %opms_chr% $unit
1.1 jdolecek 1758: ;;
1759:
1.141 apb 1760: qms[0-9]*)
1.1 jdolecek 1761: unit=${i#qms}
1.15 lukem 1762: mkdev qms$unit c %qms_chr% $unit
1.1 jdolecek 1763: ;;
1764:
1.141 apb 1765: lms[0-9]*)
1.1 jdolecek 1766: unit=${i#lms}
1.15 lukem 1767: mkdev lms$unit c %lms_chr% $unit
1.1 jdolecek 1768: ;;
1769:
1.141 apb 1770: mms[0-9]*)
1.1 jdolecek 1771: unit=${i#mms}
1.15 lukem 1772: mkdev mms$unit c %mms_chr% $unit
1.1 jdolecek 1773: ;;
1774:
1.141 apb 1775: mouse-pms[0-9]*|mouse-qms[0-9]*)
1.1 jdolecek 1776: case $i in
1.15 lukem 1777: mouse-pms*) name=pms ;;
1778: mouse-qms*) name=qms ;;
1.1 jdolecek 1779: esac
1.15 lukem 1780: unit=${i#mouse-${name}}
1781: lndev $name$unit mouse
1.1 jdolecek 1782: ;;
1783:
1784: kbd)
1.15 lukem 1785: mkdev kbd c %kbd_chr% 0
1.1 jdolecek 1786: ;;
1787:
1.4 jdolecek 1788: kbdctl)
1.15 lukem 1789: mkdev kbdctl c %kbd_chr% 1
1.4 jdolecek 1790: ;;
1791:
1792: vidcconsole0)
1.15 lukem 1793: mkdev vidcconsole0 c %vidcconsole_chr% 0 640
1.4 jdolecek 1794: ;;
1795:
1.141 apb 1796: view[0-9]*)
1.15 lukem 1797: unit=${i#view}
1.104 apb 1798: mkdev view$unit c %view_chr% $unit 666
1.1 jdolecek 1799: ;;
1800:
1.141 apb 1801: mouse[0-9]*)
1.15 lukem 1802: unit=${i#mouse}
1.1 jdolecek 1803: case $unit in
1804: 0|1)
1.15 lukem 1805: mkdev mouse$unit c %ms_chr% $unit 666
1806: if [ $unit = 0 ]; then
1807: lndev mouse$unit mouse
1.1 jdolecek 1808: fi
1809: ;;
1810: *)
1.16 lukem 1811: warn "bad unit for mouse in: $i"
1.1 jdolecek 1812: ;;
1813: esac
1814: ;;
1815:
1816: panel)
1.15 lukem 1817: mkdev panel0 c %panel_chr% 0 660
1.1 jdolecek 1818: ;;
1819:
1.37 joff 1820: tslcd)
1821: mkdev tslcd0 c %tslcd_chr% 0 660
1822: ;;
1823:
1.1 jdolecek 1824: ipty)
1.15 lukem 1825: mkdev ttyp0 c %pts_chr% 0 666
1826: mkdev ttyp1 c %pts_chr% 1 666
1827: mkdev ptyp0 c %ptc_chr% 0 666
1828: mkdev ptyp1 c %ptc_chr% 1 666
1.1 jdolecek 1829: ;;
1830:
1.24 christos 1831: ptm)
1.109 apb 1832: makedir pts 755
1.24 christos 1833: mkdev ptmx c %ptm_chr% 0 666
1834: mkdev ptm c %ptm_chr% 1 666
1835: ;;
1836:
1.141 apb 1837: grf[0-9]*)
1.1 jdolecek 1838: unit=${i#grf}
1.15 lukem 1839: mkdev grf$unit c %grf_chr% $unit 666
1.1 jdolecek 1840: ;;
1841:
1842: etvme)
1.15 lukem 1843: mkdev etvme c %et_chr% 0
1.1 jdolecek 1844: ;;
1845:
1.141 apb 1846: leo[0-9]*)
1.1 jdolecek 1847: unit=${i#leo}
1.15 lukem 1848: mkdev leo$unit c %leo_chr% $unit
1.1 jdolecek 1849: ;;
1850:
1.141 apb 1851: scif[0-9]*)
1.15 lukem 1852: unit=${i#scif}
1.116 uch 1853: mkdev scif$unit c %scif_chr% $(($unit + $dialin )) "" "" $u_uucp
1854: mkdev dscif$unit c %scif_chr% $(($unit + $dialout)) "" "" $u_uucp
1.1 jdolecek 1855: ;;
1856:
1.141 apb 1857: sci[0-9]*)
1.15 lukem 1858: unit=${i#sci}
1.116 uch 1859: mkdev sci$unit c %sci_chr% $(($unit + $dialin )) "" "" $u_uucp
1860: mkdev dsci$unit c %sci_chr% $(($unit + $dialout)) "" "" $u_uucp
1.1 jdolecek 1861: ;;
1862:
1.141 apb 1863: maple[ABCD]|maple[ABCD][0-9]*)
1.1 jdolecek 1864: case $i in
1865: mapleA*) name="mapleA"; unit=0;;
1866: mapleB*) name="mapleB"; unit=1;;
1867: mapleC*) name="mapleC"; unit=2;;
1868: mapleD*) name="mapleD"; unit=3;;
1869: esac
1870: subunit=${i#$name}
1.15 lukem 1871: mkdev $name$subunit c %maple_chr% $(($unit * 8 + 0$subunit))
1.1 jdolecek 1872: ;;
1873:
1.141 apb 1874: mmem[0-9]*)
1.15 lukem 1875: unit=${i#mmem}
1.1 jdolecek 1876: for pt in 0 # 1 2 3 4 ... 255
1877: do
1.15 lukem 1878: # mkdev mmem${unit}.${pt}a b %mmem_blk% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator
1879: mkdev mmem${unit}.${pt}c b %mmem_blk% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator
1880: # mkdev rmmem${unit}.${pt}a c %mmem_chr% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator
1881: mkdev rmmem${unit}.${pt}c c %mmem_chr% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator
1.1 jdolecek 1882: done
1883: ;;
1884:
1.141 apb 1885: mlcd[0-9]*)
1.15 lukem 1886: unit=${i#mlcd}
1.1 jdolecek 1887: for pt in 0 # 1 2 3 4 ... 255
1888: do
1.15 lukem 1889: mkdev mlcd${unit}.${pt} c %mlcd_chr% $(($unit * 256 + $pt)) 640 $g_operator
1.1 jdolecek 1890: done
1891: ;;
1892:
1.141 apb 1893: ixpcom[0-9]*)
1.1 jdolecek 1894: unit=${i#ixpcom}
1.15 lukem 1895: mkdev ixpcom$unit c %ixpcom_chr% $unit "" "" $u_uucp
1.1 jdolecek 1896: ;;
1897:
1.141 apb 1898: epcom[0-9]*)
1.34 joff 1899: unit=${i#epcom}
1900: mkdev epcom$unit c %epcom_chr% $unit "" "" $u_uucp
1901: ;;
1902:
1.145.2.4! yamt 1903: plcom[0-9]*)
! 1904: unit=${i#plcom}
! 1905: mkdev plcom$unit c %plcom_chr% $unit "" "" $u_uucp
! 1906: ;;
! 1907:
1.1 jdolecek 1908: ucbsnd)
1.15 lukem 1909: mkdev ucbsnd c %ucbsnd_chr% 0 666
1.1 jdolecek 1910: ;;
1911:
1912: adb)
1.15 lukem 1913: mkdev adb c %aed_chr% 0 666
1.1 jdolecek 1914: ;;
1915:
1.141 apb 1916: asc[0-9]*)
1.1 jdolecek 1917: unit=${i#asc}
1.15 lukem 1918: mkdev asc$unit c %asc_chr% $unit 666
1.1 jdolecek 1919: ;;
1920:
1.141 apb 1921: bwtwo[0-9]*)
1.1 jdolecek 1922: unit=${i#bwtwo}
1.15 lukem 1923: mkdev bwtwo$unit c %bwtwo_chr% $unit 666
1.1 jdolecek 1924: ;;
1925:
1.141 apb 1926: cgtwo[0-9]*)
1.1 jdolecek 1927: unit=${i#cgtwo}
1.15 lukem 1928: mkdev cgtwo$unit c %cgtwo_chr% $unit 666
1.1 jdolecek 1929: ;;
1930:
1.141 apb 1931: cgthree[0-9]*)
1.1 jdolecek 1932: unit=${i#cgthree}
1.15 lukem 1933: mkdev cgthree$unit c %cgthree_chr% $unit 666
1.1 jdolecek 1934: ;;
1935:
1.141 apb 1936: cgfour[0-9]*)
1.1 jdolecek 1937: unit=${i#cgfour}
1.15 lukem 1938: mkdev cgfour$unit c %cgfour_chr% $unit 666
1.1 jdolecek 1939: ;;
1940:
1.141 apb 1941: cgsix[0-9]*)
1.1 jdolecek 1942: unit=${i#cgsix}
1.15 lukem 1943: mkdev cgsix$unit c %cgsix_chr% $unit 666
1.1 jdolecek 1944: ;;
1945:
1.141 apb 1946: cgeight[0-9]*)
1.1 jdolecek 1947: unit=${i#cgeight}
1.15 lukem 1948: mkdev cgeight$unit c %cgeight_chr% $unit 666
1.1 jdolecek 1949: ;;
1950:
1.141 apb 1951: tcx[0-9]*)
1.1 jdolecek 1952: unit=${i#tcx}
1.15 lukem 1953: mkdev tcx$unit c %tcx_chr% $unit 666
1.1 jdolecek 1954: ;;
1955:
1.141 apb 1956: xd[0-9]*|xy[0-9]*)
1.1 jdolecek 1957: case $i in
1958: xd*) name=xd; unit=${i#xd}; blk=%xd_blk%; chr=%xd_chr%;;
1959: xy*) name=xy; unit=${i#xy}; blk=%xy_blk%; chr=%xy_chr%;;
1960: esac
1961: %MKDISK% $name $unit $blk $chr
1962: ;;
1963:
1.141 apb 1964: magma[0-9]*)
1.1 jdolecek 1965: unit=${i#magma}
1.15 lukem 1966: if [ 0$unit -gt 3 ]; then
1.16 lukem 1967: warn "bad unit for $i: $unit"
1.1 jdolecek 1968: break
1969: fi
1970: for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f
1971: do
1972: case $j in
1973: [0-9]) jn=$j ;;
1974: a) jn=10 ;;
1975: b) jn=11 ;;
1976: c) jn=12 ;;
1977: d) jn=13 ;;
1978: e) jn=14 ;;
1979: f) jn=15 ;;
1980: esac
1.15 lukem 1981: mkdev tty$unit$j c %mtty_chr% $(($unit * 64 + $jn))
1.1 jdolecek 1982: done
1.15 lukem 1983: mkdev bpp${unit}0 c %mbpp_chr% $(($unit * 64 + 0))
1984: mkdev bpp${unit}1 c %mbpp_chr% $(($unit * 64 + 1))
1.1 jdolecek 1985: ;;
1986:
1.141 apb 1987: clcd[0-9]*)
1.1 jdolecek 1988: unit=${i#clcd}
1.15 lukem 1989: if [ 0$unit -gt 7 ]; then
1.16 lukem 1990: warn "bad unit for $i: $unit"
1.1 jdolecek 1991: break
1992: fi
1993: for j in 0 1 2 3 4 5 6 7
1994: do
1.15 lukem 1995: mkdev ttyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialin)) "" "" $u_uucp
1996: mkdev dtyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialout)) "" "" $u_uucp
1.1 jdolecek 1997: done
1998: ;;
1999:
1.141 apb 2000: spif[0-9]*)
1.27 mrg 2001: unit=${i#spif}
2002: if [ 0$unit -gt 3 ]; then
2003: warn "bad unit for $i: $unit"
2004: break
2005: fi
2006: for j in 0 1 2 3 4 5 6 7; do
1.145.2.2 yamt 2007: mkdev ttyS$unit$j c %stty_chr% $(($unit * 64 + $j)) "" "" $u_uucp
1.27 mrg 2008: done
1.145.2.2 yamt 2009: mkdev bppS${unit}0 c %sbpp_chr% $(($unit * 64 + 0))
2010: mkdev bppS${unit}1 c %sbpp_chr% $(($unit * 64 + 1))
1.27 mrg 2011: ;;
2012:
1.145.2.2 yamt 2013: bpp|bpp[0-9]*)
1.1 jdolecek 2014: unit=${i#bpp}
1.15 lukem 2015: mkdev bpp$unit c %bpp_chr% $(($unit + 0))
1.1 jdolecek 2016: ;;
2017:
1.141 apb 2018: tctrl[0-9]*)
1.1 jdolecek 2019: unit=${i#tctrl}
1.15 lukem 2020: mkdev tctrl$unit c %tctrl_chr% $unit 666
1.1 jdolecek 2021: ;;
2022:
1.141 apb 2023: bmd[0-9]*)
1.15 lukem 2024: unit=${i#bmd}
2025: mkdev bmd${unit}a b %bmd_blk% $(($unit * 8 + 0)) 640 $g_operator
2026: mkdev bmd${unit}c b %bmd_blk% $(($unit * 8 + 2)) 640 $g_operator
2027: mkdev rbmd${unit}a c %bmd_chr% $(($unit * 8 + 0)) 640 $g_operator
2028: mkdev rbmd${unit}c c %bmd_chr% $(($unit * 8 + 2)) 640 $g_operator
1.1 jdolecek 2029: ;;
2030:
2031: sram)
1.15 lukem 2032: mkdev sram c %sram_chr% 0 644
1.1 jdolecek 2033: ;;
2034:
1.141 apb 2035: ttyS[0-9]*)
1.1 jdolecek 2036: unit=${i#ttyS}
1.15 lukem 2037: mkdev ttyS$unit c %sacom_chr% $(($unit + $dialin )) "" "" $u_uucp
2038: mkdev dtyS$unit c %sacom_chr% $(($unit + $dialout)) "" "" $u_uucp
1.1 jdolecek 2039: ;;
2040:
1.141 apb 2041: atabus[0-9]*)
1.28 bouyer 2042: unit=${i#atabus}
2043: mkdev atabus$unit c %atabus_chr% $unit 644
2044: ;;
2045:
1.141 apb 2046: drm[0-9]*)
1.129 christos 2047: unit=${i#drm}
1.126 mrg 2048: makedir dri 755
1.129 christos 2049: mkdev dri/card$unit c %drm_chr% $unit 660
1.126 mrg 2050: ;;
2051:
1.29 drochner 2052: drvctl)
2053: mkdev drvctl c %drvctl_chr% 0 644
2054: ;;
1.28 bouyer 2055:
1.103 dyoung 2056: isv)
2057: mkdev isv c %isv_chr% 0 644
2058: ;;
2059:
1.141 apb 2060: tap|tap[0-9]*)
1.38 cube 2061: unit=${i#tap}
2062: case "$unit" in
2063: [0-9]*)
2064: mkdev tap${unit} c %tap_chr% ${unit} 600
2065: ;;
1.141 apb 2066: "")
1.38 cube 2067: mkdev tap c %tap_chr% 0xfffff 600
2068: ;;
2069: esac
2070: ;;
2071:
1.145.2.2 yamt 2072: tpm)
2073: mkdev tpm c %tpm_chr% 0 600
2074: ;;
2075:
1.141 apb 2076: fw[0-9]*)
1.46 kiyohara 2077: unit=${i#fw}
2078: for j in 0 1 2 3
2079: do
2080: mkdev fw${unit}.${j} c %fw_chr% $((${unit} * 256 + ${j})) 660 ${g_operator}
2081: mkdev fwmem${unit}.${j} c %fw_chr% $((65536 + ${unit} * 256 + ${j})) 660 ${g_operator}
2082: done
2083: ;;
2084:
1.90 pooka 2085: # create putter device and symlinks for all subsystems using it
2086: putter)
2087: mkdev putter c %putter_chr% 0 600
1.91 pooka 2088: mkdev pud c %putter_chr% 1 600
1.104 apb 2089: lndev putter puffs
1.67 pooka 2090: ;;
2091:
1.122 ad 2092: zfs)
2093: mkdev zfs c %zfs_chr% 0 600
1.125 christos 2094: makedir zpool 755
1.122 ad 2095: ;;
2096:
1.145.2.2 yamt 2097: iscsi[0-9]*)
2098: unit=${i#iscsi}
2099: mkdev iscsi${unit} c %iscsi_chr% 0 600
2100: ;;
2101:
1.1 jdolecek 2102: midevend)
2103: %MI_DEVICES_END%
2104: local)
2105: if [ -f "$0.local" ]; then
2106: umask 0
1.85 dyoung 2107: if [ -n "$count_nodes" ]; then
1.92 apb 2108: count_nodes=$((count_nodes + \
1.145.2.3 yamt 2109: $(linecount "$("$HOST_SH" "$0.local" $opts -s all)") ))
1.85 dyoung 2110: else
1.145.2.3 yamt 2111: "$HOST_SH" "$0.local" $opts all
1.85 dyoung 2112: fi
1.1 jdolecek 2113: umask 077
2114: fi
2115: ;;
2116:
2117: *)
1.16 lukem 2118: warn "$i: unknown device"
1.1 jdolecek 2119: ;;
2120:
2121: esac
2122: done
2123:
2124: }
2125:
1.15 lukem 2126:
1.1 jdolecek 2127: # three variants of disk partitions - max 8, max 16, max 16 with highpartoffset
1.3 jdolecek 2128: # hack; only the one used by port is retained in final MAKEDEV script
1.1 jdolecek 2129: # routine is called as:
2130: # makedisk name unit blk chr
1.15 lukem 2131: makedisk_p8()
2132: {
1.1 jdolecek 2133: name="$1"; unit="$2"; blk="$3"; chr="$4"
2134:
1.15 lukem 2135: mkdev ${name}${unit}a b $blk $(($unit * 8 + 0)) 640 $g_operator
2136: mkdev ${name}${unit}b b $blk $(($unit * 8 + 1)) 640 $g_operator
2137: mkdev ${name}${unit}c b $blk $(($unit * 8 + 2)) 640 $g_operator
2138: mkdev ${name}${unit}d b $blk $(($unit * 8 + 3)) 640 $g_operator
2139: mkdev ${name}${unit}e b $blk $(($unit * 8 + 4)) 640 $g_operator
2140: mkdev ${name}${unit}f b $blk $(($unit * 8 + 5)) 640 $g_operator
2141: mkdev ${name}${unit}g b $blk $(($unit * 8 + 6)) 640 $g_operator
2142: mkdev ${name}${unit}h b $blk $(($unit * 8 + 7)) 640 $g_operator
2143: mkdev r${name}${unit}a c $chr $(($unit * 8 + 0)) 640 $g_operator
2144: mkdev r${name}${unit}b c $chr $(($unit * 8 + 1)) 640 $g_operator
2145: mkdev r${name}${unit}c c $chr $(($unit * 8 + 2)) 640 $g_operator
2146: mkdev r${name}${unit}d c $chr $(($unit * 8 + 3)) 640 $g_operator
2147: mkdev r${name}${unit}e c $chr $(($unit * 8 + 4)) 640 $g_operator
2148: mkdev r${name}${unit}f c $chr $(($unit * 8 + 5)) 640 $g_operator
2149: mkdev r${name}${unit}g c $chr $(($unit * 8 + 6)) 640 $g_operator
2150: mkdev r${name}${unit}h c $chr $(($unit * 8 + 7)) 640 $g_operator
1.1 jdolecek 2151: }
1.15 lukem 2152:
2153: makedisk_p16()
2154: {
1.1 jdolecek 2155: name="$1"; unit="$2"; blk="$3"; chr="$4"
2156:
1.15 lukem 2157: mkdev ${name}${unit}a b $blk $(($unit * 16 + 0)) 640 $g_operator
2158: mkdev ${name}${unit}b b $blk $(($unit * 16 + 1)) 640 $g_operator
2159: mkdev ${name}${unit}c b $blk $(($unit * 16 + 2)) 640 $g_operator
2160: mkdev ${name}${unit}d b $blk $(($unit * 16 + 3)) 640 $g_operator
2161: mkdev ${name}${unit}e b $blk $(($unit * 16 + 4)) 640 $g_operator
2162: mkdev ${name}${unit}f b $blk $(($unit * 16 + 5)) 640 $g_operator
2163: mkdev ${name}${unit}g b $blk $(($unit * 16 + 6)) 640 $g_operator
2164: mkdev ${name}${unit}h b $blk $(($unit * 16 + 7)) 640 $g_operator
2165: mkdev ${name}${unit}i b $blk $(($unit * 16 + 8)) 640 $g_operator
2166: mkdev ${name}${unit}j b $blk $(($unit * 16 + 9)) 640 $g_operator
2167: mkdev ${name}${unit}k b $blk $(($unit * 16 + 10)) 640 $g_operator
2168: mkdev ${name}${unit}l b $blk $(($unit * 16 + 11)) 640 $g_operator
2169: mkdev ${name}${unit}m b $blk $(($unit * 16 + 12)) 640 $g_operator
2170: mkdev ${name}${unit}n b $blk $(($unit * 16 + 13)) 640 $g_operator
2171: mkdev ${name}${unit}o b $blk $(($unit * 16 + 14)) 640 $g_operator
2172: mkdev ${name}${unit}p b $blk $(($unit * 16 + 15)) 640 $g_operator
2173: mkdev r${name}${unit}a c $chr $(($unit * 16 + 0)) 640 $g_operator
2174: mkdev r${name}${unit}b c $chr $(($unit * 16 + 1)) 640 $g_operator
2175: mkdev r${name}${unit}c c $chr $(($unit * 16 + 2)) 640 $g_operator
2176: mkdev r${name}${unit}d c $chr $(($unit * 16 + 3)) 640 $g_operator
2177: mkdev r${name}${unit}e c $chr $(($unit * 16 + 4)) 640 $g_operator
2178: mkdev r${name}${unit}f c $chr $(($unit * 16 + 5)) 640 $g_operator
2179: mkdev r${name}${unit}g c $chr $(($unit * 16 + 6)) 640 $g_operator
2180: mkdev r${name}${unit}h c $chr $(($unit * 16 + 7)) 640 $g_operator
2181: mkdev r${name}${unit}i c $chr $(($unit * 16 + 8)) 640 $g_operator
2182: mkdev r${name}${unit}j c $chr $(($unit * 16 + 9)) 640 $g_operator
2183: mkdev r${name}${unit}k c $chr $(($unit * 16 + 10)) 640 $g_operator
2184: mkdev r${name}${unit}l c $chr $(($unit * 16 + 11)) 640 $g_operator
2185: mkdev r${name}${unit}m c $chr $(($unit * 16 + 12)) 640 $g_operator
2186: mkdev r${name}${unit}n c $chr $(($unit * 16 + 13)) 640 $g_operator
2187: mkdev r${name}${unit}o c $chr $(($unit * 16 + 14)) 640 $g_operator
2188: mkdev r${name}${unit}p c $chr $(($unit * 16 + 15)) 640 $g_operator
1.1 jdolecek 2189: }
1.15 lukem 2190:
2191: makedisk_p16high()
2192: {
2193: ho=524280 # offset for partition 9 to 16
1.1 jdolecek 2194: name="$1"; unit="$2"; blk="$3"; chr="$4"
2195:
1.15 lukem 2196: mkdev ${name}${unit}a b $blk $(($unit * 8 + 0)) 640 $g_operator
2197: mkdev ${name}${unit}b b $blk $(($unit * 8 + 1)) 640 $g_operator
2198: mkdev ${name}${unit}c b $blk $(($unit * 8 + 2)) 640 $g_operator
2199: mkdev ${name}${unit}d b $blk $(($unit * 8 + 3)) 640 $g_operator
2200: mkdev ${name}${unit}e b $blk $(($unit * 8 + 4)) 640 $g_operator
2201: mkdev ${name}${unit}f b $blk $(($unit * 8 + 5)) 640 $g_operator
2202: mkdev ${name}${unit}g b $blk $(($unit * 8 + 6)) 640 $g_operator
2203: mkdev ${name}${unit}h b $blk $(($unit * 8 + 7)) 640 $g_operator
1.104 apb 2204: mkdev ${name}${unit}i b $blk $(($unit * 8 + $ho + 8)) 640 $g_operator
2205: mkdev ${name}${unit}j b $blk $(($unit * 8 + $ho + 9)) 640 $g_operator
1.15 lukem 2206: mkdev ${name}${unit}k b $blk $(($unit * 8 + $ho + 10)) 640 $g_operator
2207: mkdev ${name}${unit}l b $blk $(($unit * 8 + $ho + 11)) 640 $g_operator
2208: mkdev ${name}${unit}m b $blk $(($unit * 8 + $ho + 12)) 640 $g_operator
2209: mkdev ${name}${unit}n b $blk $(($unit * 8 + $ho + 13)) 640 $g_operator
2210: mkdev ${name}${unit}o b $blk $(($unit * 8 + $ho + 14)) 640 $g_operator
2211: mkdev ${name}${unit}p b $blk $(($unit * 8 + $ho + 15)) 640 $g_operator
2212: mkdev r${name}${unit}a c $chr $(($unit * 8 + 0)) 640 $g_operator
2213: mkdev r${name}${unit}b c $chr $(($unit * 8 + 1)) 640 $g_operator
2214: mkdev r${name}${unit}c c $chr $(($unit * 8 + 2)) 640 $g_operator
2215: mkdev r${name}${unit}d c $chr $(($unit * 8 + 3)) 640 $g_operator
2216: mkdev r${name}${unit}e c $chr $(($unit * 8 + 4)) 640 $g_operator
2217: mkdev r${name}${unit}f c $chr $(($unit * 8 + 5)) 640 $g_operator
2218: mkdev r${name}${unit}g c $chr $(($unit * 8 + 6)) 640 $g_operator
2219: mkdev r${name}${unit}h c $chr $(($unit * 8 + 7)) 640 $g_operator
1.104 apb 2220: mkdev r${name}${unit}i c $chr $(($unit * 8 + $ho + 8)) 640 $g_operator
2221: mkdev r${name}${unit}j c $chr $(($unit * 8 + $ho + 9)) 640 $g_operator
1.15 lukem 2222: mkdev r${name}${unit}k c $chr $(($unit * 8 + $ho + 10)) 640 $g_operator
2223: mkdev r${name}${unit}l c $chr $(($unit * 8 + $ho + 11)) 640 $g_operator
2224: mkdev r${name}${unit}m c $chr $(($unit * 8 + $ho + 12)) 640 $g_operator
2225: mkdev r${name}${unit}n c $chr $(($unit * 8 + $ho + 13)) 640 $g_operator
2226: mkdev r${name}${unit}o c $chr $(($unit * 8 + $ho + 14)) 640 $g_operator
2227: mkdev r${name}${unit}p c $chr $(($unit * 8 + $ho + 15)) 640 $g_operator
1.4 jdolecek 2228: }
2229:
2230: # make only the very few basic disk device nodes - 'a' partition
2231: # and raw partition
1.15 lukem 2232: makedisk_minimal()
2233: {
1.4 jdolecek 2234: name=$1; unit=$2; blk=$3; chr=$4
2235: doff=%DISKMINOROFFSET%
1.15 lukem 2236: ro=%RAWDISK_OFF%
2237: rn=%RAWDISK_NAME%
1.4 jdolecek 2238:
1.15 lukem 2239: mkdev ${name}${unit}a b $blk $(($unit * $doff + 0)) 640 $g_operator
1.104 apb 2240: mkdev ${name}${unit}$rn b $blk $(($unit * $doff + $ro)) 640 $g_operator
1.15 lukem 2241: mkdev r${name}${unit}a c $chr $(($unit * $doff + 0)) 640 $g_operator
2242: mkdev r${name}${unit}$rn c $chr $(($unit * $doff + $ro)) 640 $g_operator
1.1 jdolecek 2243: }
2244:
1.98 apb 2245: # create_mfs_dev nodes
1.104 apb 2246: # Create a memory file system for a given number of device nodes,
2247: # and mount it. Attempts to use mount_tmpfs, or falls back to
2248: # mount_mfs.
1.98 apb 2249: #
1.104 apb 2250: # If do_redirect, then also redirect output to the console.
1.98 apb 2251: #
1.77 dsl 2252: create_mfs_dev()
2253: {
1.98 apb 2254: ndevnodes=${1-1200}
2255: dev_mountpoint=${PWD:-/dev}
2256:
2257: # Number of inodes is the specified number of device nodes, plus
2258: # a margin to allow for extra device nodes created later.
2259: ninode=$((ndevnodes * 11 / 10))
2260: # Add 2 reserved inodes (needed for both mfs and tmpfs), and round
2261: # up to a multiple of 32 (needed for mfs, not needed for tmpfs).
2262: ninode=$(( (ninode + 2 + 31) / 32 * 32 ))
2263: # Try tmpfs; if that fails try mfs.
1.118 joerg 2264: #
2265: # For tmpfs, allocate 16KB and 512 byte per node.
2266: # Actual requirements are much lower, but the size limit
2267: # is only intended to avoid accidental writing to /dev.
2268: fs_bytes=$((16384 + ninode * 512))
1.99 apb 2269: if mount_tmpfs -s $fs_bytes -n $ninode -m 0755 \
1.98 apb 2270: -o union tmpfs "$dev_mountpoint"
2271: then
1.118 joerg 2272: fstype=tmpfs
1.98 apb 2273: else
1.118 joerg 2274: # This file system size calculation is exact for mount_mfs(8)
2275: # with 512-byte sectors. 40960 bytes (80 blocks) is the
2276: # minimum size allowed by mount_mfs.
2277: fs_bytes=$((8192 + 2 * 8192 + 4096 + ninode*512 + 8192))
2278: [ "$fs_bytes" -lt 40960 ] && fs_bytes=40960
2279: fs_blocks=$((fs_bytes/512))
2280: if mount_mfs -b 4096 -f 512 -s $fs_blocks -n $ninode -p 0755 \
2281: -o union swap "$dev_mountpoint"
2282: then
2283: fstype=mfs
2284: else
2285: die "Failed to create memory file system"
2286: fi
1.98 apb 2287: fi
1.84 dyoung 2288:
1.98 apb 2289: # Our current directory was in the lower file system; change it to
2290: # the newly mounted upper file system.
2291: cd "$dev_mountpoint"
1.84 dyoung 2292:
1.82 apb 2293: if $do_redirect; then
2294: # Redirect stdout and stderr to console
2295: mknod -m 600 -g 0 -u 0 temp_console c 0 0
2296: exec >temp_console 2>&1
2297: rm temp_console
2298: fi
1.98 apb 2299:
2300: echo "Created $fstype $dev_mountpoint" \
1.118 joerg 2301: "($fs_bytes byte, $ninode inodes)"
1.84 dyoung 2302: }
1.77 dsl 2303:
1.74 apb 2304: #
1.79 apb 2305: # MAIN: If MAKEDEV_AS_LIBRARY is set, then we are being used as a
1.93 apb 2306: # function library, so just return. Otherwise, do all the real work.
1.74 apb 2307: #
1.79 apb 2308: [ -n "${MAKEDEV_AS_LIBRARY}" ] && return
1.97 apb 2309: makedev_main makedev ${1+"$@"}
CVSweb <webmaster@jp.NetBSD.org>