MAKEDEV.tmpl revision 1.51
1168404Spjd#!/bin/sh -
2168404Spjd#	$NetBSD: MAKEDEV.tmpl,v 1.51 2006/03/25 17:19:02 christos Exp $
3168404Spjd#
4168404Spjd# Copyright (c) 2003 The NetBSD Foundation, Inc.
5168404Spjd# All rights reserved.
6168404Spjd#
7168404Spjd# Redistribution and use in source and binary forms, with or without
8168404Spjd# modification, are permitted provided that the following conditions
9168404Spjd# are met:
10168404Spjd# 1. Redistributions of source code must retain the above copyright
11168404Spjd#    notice, this list of conditions and the following disclaimer.
12168404Spjd# 2. Redistributions in binary form must reproduce the above copyright
13168404Spjd#    notice, this list of conditions and the following disclaimer in the
14168404Spjd#    documentation and/or other materials provided with the distribution.
15168404Spjd# 3. All advertising materials mentioning features or use of this software
16168404Spjd#    must display the following acknowledgement:
17168404Spjd#        This product includes software developed by the NetBSD
18168404Spjd#        Foundation, Inc. and its contributors.
19168404Spjd# 4. Neither the name of The NetBSD Foundation nor the names of its
20168404Spjd#    contributors may be used to endorse or promote products derived
21168404Spjd#    from this software without specific prior written permission.
22185029Spjd#
23168404Spjd# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
24168404Spjd# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
25168404Spjd# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26168404Spjd# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
27168404Spjd# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28168404Spjd# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29168404Spjd# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30168404Spjd# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31168404Spjd# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32168404Spjd# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33168404Spjd# POSSIBILITY OF SUCH DAMAGE.
34168404Spjd#
35168404Spjd#
36168404Spjd###########################################################################
37168404Spjd#
38168404Spjd#   PLEASE RUN "cd ../share/man/man8 ; make makedevs"
39168404Spjd#   AFTER CHANGING THIS FILE, AND COMMIT THE UPDATED MANPAGE!
40168404Spjd#
41168404Spjd###########################################################################
42168404Spjd#
43168404Spjd# Device "make" file.  Valid special arguments:
44168404Spjd#	all	makes all known devices, including local devices.
45168404Spjd#		Tries to make the 'standard' number of each type.
46168404Spjd#	init	A set of devices that is used for MFS /dev by init.
47168404Spjd#		May be equal to "all".
48168404Spjd#	floppy	devices to be put on install floppies
49168404Spjd#	ramdisk	devices to be put into INSTALL kernel ramdisks.
50168404Spjd#	std	standard devices
51168404Spjd#	local	configuration specific devices
52168404Spjd#	wscons	make wscons devices
53168404Spjd#	usbs	make USB devices
54168404Spjd#	isdns	make ISDN devices
55168404Spjd#
56168404Spjd# Tapes:
57168404Spjd#	st*	SCSI tapes
58168404Spjd#	wt*	QIC-interfaced (e.g. not SCSI) 3M cartridge tape
59168404Spjd#	ht*	MASSBUS TM03 and TU??
60168404Spjd#	mt*	MSCP tapes (e.g. TU81, TK50)
61168404Spjd#	tm*	UNIBUS TM11 and TE10 emulations (e.g. Emulex TC-11)
62168404Spjd#	ts*	UNIBUS TS11
63168404Spjd#	ut*	UNIBUS TU45 emulations (e.g. si 9700)
64168404Spjd#	uu*	TU58 cassettes on DL11 controller
65168404Spjd#
66168404Spjd# Disks:
67168404Spjd#	ccd*	concatenated disk devices
68168404Spjd#	cd*	SCSI or ATAPI CD-ROM
69168404Spjd#	cgd*	cryptographic disk devices
70168404Spjd#	raid*	RAIDframe disk devices
71169028Spjd#	sd*	SCSI disks
72168404Spjd#	wd*	"winchester" disk drives (ST506,IDE,ESDI,RLL,...)
73168404Spjd#	bmd*	Nereid bank memory disks
74168404Spjd#	ed*	IBM PS/2 ESDI disk devices
75168404Spjd#	fd*	"floppy" disk drives (3 1/2", 5 1/4")
76168404Spjd#	fss*	Files system snapshot devices
77168404Spjd#	gdrom*	Dreamcast "gigadisc" CD-ROM drive
78168404Spjd#	hk*	UNIBUS RK06 and RK07
79168404Spjd#	hp*	MASSBUS RM??
80168404Spjd#	ld*	Logical disk devices (e.g., hardware RAID)
81168404Spjd#	mcd*	Mitsumi CD-ROM
82168404Spjd#	md*	memory pseudo-disk devices
83168404Spjd#	ofdisk*	OpenFirmware disk devices
84168404Spjd#	ra*	MSCP disks (RA??, RD??)
85168404Spjd#	rb*	730 IDC w/ RB80 and/or RB02
86168404Spjd#	rd*	HDC9224 RD disks on VS2000
87168404Spjd#	rl*	UNIBUS RL02
88168404Spjd#	rx*	MSCP floppy disk (RX33/50/...)
89168404Spjd#	up*	other UNIBUS devices (e.g. on Emulex SC-21V controller)
90168404Spjd#	vnd*	"file" pseudo-disks
91168404Spjd#	xbd*	Xen virtual disks
92168404Spjd#	xd*	Xylogic 753/7053 disks
93168404Spjd#	xy*	Xylogic 450/451 disks
94168404Spjd#
95168404Spjd# Pointing devices:
96168404Spjd#	wsmouse* wscons mouse events
97168404Spjd#	lms*	Logitech bus mouse
98168404Spjd#	mms*	Microsoft bus mouse
99168404Spjd#	qms*	"quadrature mouse"
100168404Spjd#	pms*	PS/2 mouse
101168404Spjd#	mouse	mouse (provides events, for X11)
102168404Spjd#
103168404Spjd# Keyboard devices:
104168404Spjd#	wskbd*	wscons keyboard events
105168404Spjd#	kbd	raw keyboard (provides events, for X11)
106168404Spjd#	kbdctl	keyboard control
107168404Spjd#
108168404Spjd# Terminals/Console ports:
109168404Spjd#	tty[01]*	standard serial ports
110168404Spjd#	tty0*	SB1250 ("sbscn") serial ports (sbmips)
111168404Spjd#	ttyE*	wscons - Workstation console ("wscons") glass-tty emulators
112168404Spjd#	ttyCZ?	Cyclades-Z multiport serial boards.  Each "unit"
113168404Spjd#		makes 64 ports.
114168404Spjd#	ttyCY?	Cyclom-Y multiport serial boards. Each "unit" makes
115168404Spjd#		32 ports.
116168404Spjd#	ttye*	ITE bitmapped consoles
117168404Spjd#	ttyv0	pccons
118168404Spjd#	ttyC?	NS16550 ("com") serial ports
119168404Spjd#	ttyS*	SA1110 serial port (hpcarm)
120168404Spjd#	ttyTX?	TX39 internal serial ports (hpcmips)
121168404Spjd#	ttyB?	DEC 3000 ZS8530 ("scc") serial ports (alpha)
122168404Spjd#	ttyA*	mfc serial ports (amiga)
123168404Spjd#	ttyB*	msc serial ports (amiga)
124168404Spjd#	ttyC*	com style serial ports (DraCo, HyperCom) (amiga)
125168404Spjd#		On the DraCo, units 0 and 1 are the built-in "modem" and
126168404Spjd#		"mouse" ports, if configured.
127168404Spjd#	ttyA0   8530 Channel A (formerly ser02) (atari)
128168404Spjd#	ttyA1	8530 Channel B (formerly mdm02) (atari)
129168404Spjd#	ttyB0	UART on first 68901 (formerly mdm01) (atari)
130168404Spjd#	ixpcom	IXP12x0 COM ports
131168404Spjd#	epcom	EP93xx COM ports
132168404Spjd#	ttyM?	HP200/300 4 port serial mux interface (hp300)
133168404Spjd#	ttya	"ttya" system console (luna68k)
134168404Spjd#	ttyb	second system serial port (luna68k)
135168404Spjd#	tty*	Onboard serial ports (mvme68k)
136168404Spjd#		On the mvme147 these are: ttyZ1, ttyZ2 and ttyZ3.
137168404Spjd#		On the mvme167, and '177: ttyC1, ttyC2 and ttyC3.
138168404Spjd#		Note that tty[CZ]0 is grabbed by the console device
139168404Spjd#		so is not created by default
140168404Spjd#	dc*	PMAX 4 channel serial interface (kbd, mouse, modem, printer)
141168404Spjd#	scc*	82530 serial interface (pmax)
142168404Spjd#	ttyZ*	Zilog 8530 ("zstty") serial ports
143168404Spjd#	tty[abcd]	Built-in serial ports (sparc)
144168404Spjd#	tty*	Z88530 serial controllers (sparc64)
145168404Spjd#	ttyh*	SAB82532 serial controllers (sparc64)
146168404Spjd#	tty[a-j]	Built-in serial ports (sun2, sun3)
147168404Spjd#	ttyC?	pccons (arc)
148168404Spjd#	dz*	UNIBUS DZ11 and DZ32 (vax)
149168404Spjd#	dh*	UNIBUS DH11 and emulations (e.g. Able DMAX, Emulex CS-11) (vax)
150168404Spjd#	dmf*	UNIBUS DMF32 (vax)
151168404Spjd#	dhu*    UNIBUS DHU11 (vax)
152168404Spjd#	dmz*    UNIBUS DMZ32 (vax)
153168404Spjd#	dl*	UNIBUS DL11 (vax)
154168404Spjd#	xencons	Xen virtual console
155168404Spjd#
156168404Spjd# Terminal multiplexors:
157168404Spjd#	dc*	4 channel serial interface (keyboard, mouse, modem, printer)
158168404Spjd#	dh*	UNIBUS DH11 and emulations (e.g. Able DMAX, Emulex CS-11)
159168404Spjd#	dhu*	UNIBUS DHU11
160168404Spjd#	dl*	UNIBUS DL11
161168404Spjd#	dmf*	UNIBUS DMF32
162168404Spjd#	dmz*	UNIBUS DMZ32
163168404Spjd#	dz*	UNIBUS DZ11 and DZ32
164168404Spjd#	scc*	82530 serial interface
165168404Spjd#
166168404Spjd# Call units:
167168404Spjd#	dn*	UNIBUS DN11 and emulations (e.g. Able Quadracall)
168168404Spjd#
169168404Spjd# Pseudo terminals:
170168404Spjd#	ptm	pty multiplexor device.
171168404Spjd#	pty*	set of 16 master and slave pseudo terminals
172168404Spjd#	opty	first 16 ptys, to save inodes on install media
173168404Spjd#	ipty	first 2 ptys, for install media use only
174168404Spjd#
175185029Spjd# Printers:
176185029Spjd#	arcpp*	Archimedes parallel port
177185029Spjd#	lpt*	stock lp
178185029Spjd#	lpa*	interruptless lp
179185029Spjd#	par*	Amiga motherboard parallel port
180168404Spjd#
181168404Spjd# USB devices:
182168404Spjd#	usb*	USB control devices
183168404Spjd#	uhid*	USB generic HID devices
184168404Spjd#	ulpt*	USB printer devices
185168404Spjd#	ugen*	USB generic devices
186168404Spjd#	urio*	USB Diamond Rio 500 devices
187168404Spjd#	uscanner*	USB scanners
188168404Spjd#	ttyU*	USB modems
189168404Spjd#	ttyY*	USB serial adapters
190185029Spjd#
191185029Spjd# ISDN devices:
192168404Spjd#	isdn	communication between userland isdnd and kernel
193168404Spjd#	isdnctl	control device
194185029Spjd#	isdnbchan* raw b-channel access
195185029Spjd#	isdntel*	telephony device
196168404Spjd#	isdnteld*	telephony dialout device
197168404Spjd#	isdntrc*	trace device
198168404Spjd#
199185029Spjd# Video devices:
200185029Spjd#	bwtwo*	monochromatic frame buffer
201185029Spjd#	cgtwo*	8-bit color frame buffer
202185029Spjd#	cgthree*	8-bit color frame buffer
203185029Spjd#	cgfour*	8-bit color frame buffer
204168404Spjd#	cgsix*	accelerated 8-bit color frame buffer
205168404Spjd#	cgeight*	24-bit color frame buffer
206168404Spjd#	etvme	Tseng et-compatible cards on VME (atari)
207168404Spjd#	ik*	UNIBUS interface to Ikonas frame buffer
208168404Spjd#	leo	Circad Leonardo VME-bus true color (atari)
209168404Spjd#	ps*	UNIBUS interface to Picture System 2
210168404Spjd#	qv*	QVSS (MicroVAX) display
211168404Spjd#	tcx*	accelerated 8/24-bit color frame buffer
212168404Spjd#
213168404Spjd# Maple bus devices:
214168404Spjd#	maple	Maple bus control devices
215168404Spjd#	mlcd*	Maple bus LCD devices
216168404Spjd#	mmem*	Maple bus storage devices
217168404Spjd#
218168404Spjd# IEEE1394 bus devices:
219168404Spjd#	fw*	IEEE1394 bus generic node access devices
220168404Spjd#	fwmem*	IEEE1394 bus physical memory of the remote node access devices
221168404Spjd#
222168404Spjd# Special purpose devices:
223168404Spjd#	ad*	UNIBUS interface to Data Translation A/D converter
224168404Spjd#	agp*	AGP GART devices
225168404Spjd#	altq	ALTQ control interface
226168404Spjd#	apm	power management device
227168404Spjd#	audio*	audio devices
228168404Spjd#	bell*	OPM bell device (x68k)
229168404Spjd#	bktr	Brooktree 848/849/878/879 based TV cards
230168404Spjd#	bpf	packet filter
231168404Spjd#	cfs*	Coda file system device
232168404Spjd#	ch*	SCSI media changer
233168404Spjd#	cir*	Consumer IR
234168404Spjd#	clockctl clock control for non root users
235168404Spjd#	crypto	hardware crypto access driver
236168404Spjd#	dmoverio hardware-assisted data movers
237168404Spjd#	dpt*	DPT/Adaptec EATA RAID management interface
238168404Spjd#	dpti*	DPT/Adaptec I2O RAID management interface
239168404Spjd#	fb*	PMAX generic framebuffer pseudo-device
240168404Spjd#	fd	file descriptors
241168404Spjd#	grf*	graphics frame buffer device
242168404Spjd#	hil	HP300 HIL input devices
243168404Spjd#	icp	ICP-Vortex/Intel RAID control interface
244168404Spjd#	iic*	IIC bus device
245168404Spjd#	iop*	I2O IOP control interface
246168404Spjd#	ipl	IP Filter
247168404Spjd#	irframe* IrDA physical frame
248168404Spjd#	ite*	terminal emulator interface to HP300 graphics devices
249168404Spjd#	joy*	joystick device
250168404Spjd#	kttcp	kernel ttcp helper device
251168404Spjd#	lkm	loadable kernel modules interface
252168404Spjd#	magma*	Magma multiport serial/parallel cards
253168404Spjd#	midi*	MIDI
254168404Spjd#	mlx*	Mylex DAC960 control interface
255168404Spjd#	mly*	Mylex AcceleRAID/eXtremeRAID control interface
256168404Spjd#	np*	UNIBUS Ethernet co-processor interface, for downloading.
257168404Spjd#	nsmb*	SMB requester
258168404Spjd#	openfirm OpenFirmware accessor
259168404Spjd#	pci*	PCI bus access devices
260168404Spjd#	pf	PF packet filter
261168404Spjd#	pow*	power management device (x68k)
262168404Spjd#	px*	PixelStamp Xserver access
263168404Spjd#	radio*	radio devices
264168404Spjd#	random	Random number generator
265168404Spjd#	rtc*	RealTimeClock
266168404Spjd#	satlink* PlanetConnect satellite receiver driver
267168404Spjd#	scsibus* SCSI busses
268168404Spjd#	se*	SCSI Ethernet
269168404Spjd#	ses*	SES/SAF-TE SCSI Devices
270168404Spjd#	speaker	PC speaker		(XXX - installed)
271168404Spjd#	sram	battery backuped memory (x68k)
272168404Spjd#	ss*	SCSI scanner
273168404Spjd#	stic*	PixelStamp interface chip
274168404Spjd#	sysmon	System Monitoring hardware
275168404Spjd#	systrace syscall tracer
276168404Spjd#	tap*	virtual Ethernet device
277168404Spjd#	tun*	network tunnel driver
278168404Spjd#	twe	3ware Escalade control interface
279168404Spjd#	uk*	unknown SCSI device
280168404Spjd#	veriexec verified executable fingerprint loader
281168404Spjd#	vmegen*	generic VME access
282168404Spjd#	view*	generic interface to graphic displays (Amiga)
283168404Spjd#	wsfont*	console font control
284168404Spjd#	wsmux*	wscons event multiplexor
285168404Spjd#	xenevt	Xen event interface
286168404Spjd
287168404Spjd
288168404SpjdPATH=/sbin:/usr/sbin:/bin:/usr/bin:/rescue
289168404Spjd
290168404Spjd
291168404Spjdusage()
292168404Spjd{
293168404Spjd	cat 1>&2 << _USAGE_
294168404SpjdUsage: ${0##*/} [-f] [-m mknod] [-s]  special [...]
295168404Spjd	Create listed special devices.  Options:
296168404Spjd	-f		Force permissions to be updated on existing devices.
297168404Spjd	-m mknod	Name of mknod(8) program.  [\$TOOL_MKNOD or mknod]
298185029Spjd	-s		Generate mtree(8) specfile instead of creating devices.
299185029Spjd
300168404Spjd_USAGE_
301168404Spjd	exit 1
302168404Spjd}
303168404Spjd
304168404Spjd# zeropad width number
305168404Spjd#	display number with a zero (`0') padding of width digits.
306168404Spjd#
307168404Spjdzeropad()
308168404Spjd{
309168404Spjd	case $(($1 - ${#2})) in
310168404Spjd	5)	echo 00000$2;;
311168404Spjd	4)	echo 0000$2;;
312168404Spjd	3)	echo 000$2;;
313168404Spjd	2)	echo 00$2;;
314168404Spjd	1)	echo 0$2;;
315168404Spjd	0)	echo $2;;
316168404Spjd	*)	echo "$0: bad padding" 1>&2; exit 1;;
317168404Spjd	esac
318168404Spjd}
319168404Spjd
320168404Spjd# hexprint number
321168404Spjd#	display (base10) number as hexadecimal
322168404Spjd#
323168404Spjdhexprint()
324168404Spjd{
325168404Spjd	case $1 in
326168404Spjd	[0-9])	echo $1 ;;
327168404Spjd	10)	echo a ;;
328168404Spjd	11)	echo b ;;
329168404Spjd	12)	echo c ;;
330168404Spjd	13)	echo d ;;
331168404Spjd	14)	echo e ;;
332168404Spjd	15)	echo f ;;
333168404Spjd	*)	echo $(hexprint $(($1 / 16)))$(hexprint $(($1 % 16))) ;;
334168404Spjd	esac
335168404Spjd}
336168404Spjd
337168404Spjddo_force=false
338168404Spjddo_specfile=false
339168404Spjdwhile getopts fm:s ch; do
340168404Spjd	case ${ch} in
341168404Spjd	f)	do_force=true ;;
342168404Spjd	m)	TOOL_MKNOD=${OPTARG} ;;
343168404Spjd	s)	do_specfile=true ;;
344168404Spjd	*)	usage ;;
345168404Spjd	esac
346168404Spjddone
347168404Spjdshift $((${OPTIND} - 1))
348168404Spjd[ $# -gt 0 ] || usage
349168404Spjd
350168404Spjd
351168404SpjdMKNOD="${TOOL_MKNOD:-mknod} -F netbsd"
352168404Spjdif $do_force; then
353168404Spjd	MKNOD="${MKNOD} -R"
354168404Spjdelse
355168404Spjd	MKNOD="${MKNOD} -r"
356168404Spjdfi
357168404Spjd
358168404Spjdu_root="%uid_root%"
359168404Spjdu_uucp="%uid_uucp%"
360168404Spjdg_kmem="%gid_kmem%"
361168404Spjdg_ntpd="%gid_ntpd%"
362168404Spjdg_operator="%gid_operator%"
363168404Spjdg_wheel="%gid_wheel%"
364168404Spjddialin=0
365168404Spjddialout=524288
366168404Spjdcallunit=262144
367168404Spjd
368168404Spjd# only allow read&write for owner by default
369168404Spjdumask 077
370168404Spjd
371168404Spjd# Check if we have fdesc mounted
372168404Spjdif [ -d fd ]; then
373168404Spjd        case "`df fd`" in
374168404Spjd        *fdesc*)	nofdesc=false;;
375168404Spjd        *)		nofdesc=true;;
376168404Spjd        esac
377168404Spjdelse
378168404Spjd        nofdesc=true
379168404Spjdfi
380168404Spjd
381168404Spjd
382168404Spjdif $do_specfile; then
383168404Spjd	echo ". type=dir"
384168404Spjdfi
385168404Spjd
386168404Spjd
387168404Spjd#
388168404Spjd# functions available to create nodes:
389168404Spjd#
390168404Spjd# mkdev name [b|c] major minor [mode{=600} [gid{=0} [uid{=0}]]]
391168404Spjd#	create device node `name' with the appropriate permissions
392168404Spjd#
393168404Spjd# lndev src target
394168404Spjd#	create a symlink from src to target
395168404Spjd#
396168404Spjd# makedir dir mode
397168404Spjd#	create directory with appropriate mode
398168404Spjd#
399168404Spjd
400168404Spjdmkdev()
401168404Spjd{
402168404Spjd	if $do_specfile; then
403168404Spjd		case $2 in
404168404Spjd		b)	type=block ;;
405168404Spjd		c)	type=char ;;
406168404Spjd		esac
407168404Spjd		echo "./$1 type=${type} device=netbsd,$3,$4 mode=${5:-600} gid=${6:-$g_wheel} uid=${7:-$u_root}"
408168404Spjd	else
409168404Spjd		${MKNOD} -m ${5:-600} -g \#${6:-$g_wheel} -u \#${7:-$u_root} $1 $2 $3 $4
410168404Spjd	fi
411168404Spjd}
412168404Spjd
413168404Spjdlndev()
414168404Spjd{
415168404Spjd	if $do_specfile; then
416168404Spjd		echo "./$2 type=link link=$1 mode=0700 gid=$g_wheel uid=$u_root"
417168404Spjd	else
418168404Spjd		ln -f -s $1 $2
419168404Spjd	fi
420168404Spjd}
421168404Spjd
422168404Spjdmakedir()
423168404Spjd{
424168404Spjd	if $do_specfile; then
425168404Spjd		echo "./$1 type=dir mode=$2 gid=$g_wheel uid=$u_root"
426168404Spjd	else
427168404Spjd		mkdir $1 2>/dev/null
428168404Spjd		chmod $2 $1
429168404Spjd	fi
430168404Spjd}
431168404Spjd
432168404Spjdwarn()
433168404Spjd{
434168404Spjd	echo 1>&2 "$0: $*"
435168404Spjd}
436168404Spjd
437168404Spjd
438168404Spjd
439185029Spjd# makedev special [...]
440185029Spjd#	the main loop
441185029Spjd#
442185029Spjd
443185029Spjdmakedev()
444185029Spjd{
445185029Spjd
446185029Spjdfor i
447185029Spjddo
448185029Spjd
449168404Spjdcase $i in
450168404Spjd
451168404Spjd%MD_DEVICES%
452168404Spjd
453168404Spjdall)
454168404Spjd	makedev all_md
455168404Spjd	makedev std fd ptm pty0 pty1 pty2 pty3
456168404Spjd	makedev ccd0 ccd1 ccd2 ccd3
457168404Spjd	makedev cgd0 cgd1 cgd2 cgd3
458168404Spjd	makedev fss0 fss1 fss2 fss3
459168404Spjd	makedev md0 md1
460168404Spjd	makedev raid0 raid1 raid2 raid3 raid4 raid5 raid6 raid7
461168404Spjd	makedev vnd0 vnd1 vnd2 vnd3
462168404Spjd	makedev bpf
463168404Spjd	makedev tun0 tun1 tun2 tun3
464168404Spjd	makedev ipl pf crypto random systrace
465168404Spjd	makedev lkm clockctl
466168404Spjd	makedev local
467168404Spjd	makedev atabus0 atabus1 atabus2 atabus3
468168404Spjd	makedev tap tap0 tap1 tap2 tap3
469168404Spjd	makedev gpio gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7
470168404Spjd	;;
471168404Spjd
472185029Spjdinit)
473168404Spjd	# unless overridden by MD entry, this is equal to 'all'
474185029Spjd	makedev all
475185029Spjd	;;
476185029Spjd
477185029Spjd%MI_DEVICES_BEGIN%
478185029Spjdaudio)
479185029Spjd	makedev audio0 audio1 audio2 audio3
480185029Spjd	lndev sound0 sound
481185029Spjd	lndev audio0 audio
482185029Spjd	lndev mixer0 mixer
483185029Spjd	lndev audioctl0 audioctl
484185029Spjd	;;
485185029Spjd
486185029Spjdgpio)
487185029Spjd	makedev gpio0 gpio1 gpio2 gpio3 gpio4 gpio5 gpio6 gpio7
488168404Spjd	lndev gpio0 gpio
489168404Spjd	;;
490185029Spjd
491185029Spjdradio)
492185029Spjd	makedev radio0 radio1
493185029Spjd	lndev radio0 radio
494185029Spjd	;;
495185029Spjd
496185029Spjdramdisk)
497185029Spjd	makedev floppy md0
498185029Spjd	;;
499185029Spjd
500185029Spjdusbs)
501185029Spjd	makedev usb usb0 usb1 usb2 usb3 usb4 usb5 usb6 usb7
502185029Spjd	makedev uhid0 uhid1 uhid2 uhid3
503168404Spjd	makedev ulpt0 ulpt1
504168404Spjd	makedev ttyU0 ttyU1
505200724Sdelphij	makedev ttyY0 ttyY1
506200724Sdelphij	makedev urio0
507200724Sdelphij	makedev uscanner0 uscanner1
508200724Sdelphij	makedev ugen0
509200724Sdelphij	;;
510200724Sdelphij
511200724Sdelphijisdns)
512200724Sdelphij	makedev isdn isdnctl isdnbchan0 isdnbchan1 isdntel0 isdntel1 isdnteld0 isdnteld1 isdntrc0 isdntrc1
513200724Sdelphij	;;
514200724Sdelphij
515200724Sdelphijstd)
516200724Sdelphij	mkdev		console	c %cons_chr% 0	600
517200724Sdelphij	mkdev		constty	c %cons_chr% 1	600
518200724Sdelphij	mkdev		drum	c %swap_chr% 0	640 $g_kmem
519200724Sdelphij	mkdev		kmem	c %mem_chr% 1	640 $g_kmem
520200724Sdelphij	mkdev		mem	c %mem_chr% 0	640 $g_kmem
521200724Sdelphij	mkdev		null	c %mem_chr% 2	666
522200724Sdelphij	mkdev		zero	c %mem_chr% 12	666
523200724Sdelphij	mkdev		klog	c %log_chr% 0	600
524168404Spjd	mkdev		ksyms	c %ksyms_chr% 0	444
525168404Spjd	if $nofdesc; then
526168404Spjd		mkdev	tty	c %ctty_chr% 0		666
527168404Spjd		mkdev	stdin	c %filedesc_chr% 0	666
528168404Spjd		mkdev	stdout	c %filedesc_chr% 1	666
529168404Spjd		mkdev	stderr	c %filedesc_chr% 2	666
530168404Spjd	fi
531168404Spjd	;;
532168404Spjd
533168404Spjdusb)
534185029Spjd	mkdev usb c %usb_chr% 255 444
535168404Spjd	;;
536185029Spjd
537168404Spjdusb*)
538168404Spjd	unit=${i#usb}
539168404Spjd	usb=usb$unit
540168404Spjd	mkdev usb$unit c %usb_chr% $unit
541168404Spjd	;;
542168404Spjd
543168404Spjduhid*)
544200724Sdelphij	unit=${i#uhid}
545200724Sdelphij	mkdev uhid$unit c %uhid_chr% $unit 666
546200724Sdelphij	;;
547200724Sdelphij
548200724Sdelphijulpt*)
549200724Sdelphij	unit=${i#ulpt}
550200724Sdelphij	mkdev ulpt$unit c %ulpt_chr% $unit
551200724Sdelphij	mkdev ulpn$unit c %ulpt_chr% $(($unit + 64))
552200724Sdelphij	;;
553200724Sdelphij
554200724Sdelphijurio*)
555200724Sdelphij	unit=${i#urio}
556200724Sdelphij	mkdev urio$unit c %urio_chr% $unit 666
557200724Sdelphij	;;
558200724Sdelphij
559168404Spjduscanner*)
560168404Spjd	unit=${i#uscanner}
561168404Spjd	mkdev uscanner$unit c %uscanner_chr% $unit
562168404Spjd	;;
563168404Spjd
564168404SpjdttyY*)
565168404Spjd	unit=${i#ttyY}
566168404Spjd	mkdev ttyY$unit c %ucycom_chr% $(($unit + $dialin  )) "" "" $u_uucp
567168404Spjd	mkdev dtyY$unit c %ucycom_chr% $(($unit + $dialout )) "" "" $u_uucp
568168404Spjd	mkdev ctyY$unit c %ucycom_chr% $(($unit + $callunit)) "" "" $u_uucp
569168404Spjd	;;
570168404Spjd
571168404SpjdttyU*)
572168404Spjd	unit=${i#ttyU}
573168404Spjd	mkdev ttyU$unit c %ucom_chr% $(($unit + $dialin  )) "" "" $u_uucp
574168404Spjd	mkdev dtyU$unit c %ucom_chr% $(($unit + $dialout )) "" "" $u_uucp
575168404Spjd	mkdev ctyU$unit c %ucom_chr% $(($unit + $callunit)) "" "" $u_uucp
576168404Spjd	;;
577168404Spjd
578185029Spjdugen*)
579185029Spjd	unit=${i#ugen}
580185029Spjd	for j in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
581185029Spjd	do
582185029Spjd		mkdev ugen$unit.$j c %ugen_chr% $(($unit * 16 + ${j#0}))
583185029Spjd	done
584185029Spjd	;;
585185029Spjd
586168404Spjdwscons)
587185029Spjd	makedev ttyE0 ttyE1 ttyE2 ttyE3 ttyE4 ttyE5 ttyE6 ttyE7
588185029Spjd	makedev wsmouse0 wsmouse1 wsmouse2 wsmouse3
589185029Spjd	makedev wskbd0 wskbd1 wskbd2 wskbd3
590185029Spjd	makedev wsmux0 wsmux1 wsmux2 wsmux3
591185029Spjd	makedev wsmouse wskbd
592185029Spjd	makedev ttyEcfg ttyEstat
593185029Spjd	makedev wsfont
594185029Spjd	;;
595168404Spjd
596185029Spjdwsmouse)
597185029Spjd	mkdev wsmouse c %wsmux_chr% 0
598185029Spjd	;;
599185029Spjd
600185029Spjdwskbd)
601168404Spjd	mkdev wskbd c %wsmux_chr% 1
602185029Spjd	;;
603185029Spjd
604185029Spjdwsmux*)
605185029Spjd	unit=${i#wsmux}
606185029Spjd	mkdev wsmux$unit    c %wsmux_chr% $unit
607185029Spjd	mkdev wsmuxctl$unit c %wsmux_chr% $(($unit + 128)) 200
608168404Spjd	;;
609185029Spjd
610185029Spjdxenevt)
611185029Spjd	mkdev xenevt c %xenevt_chr% 0
612185029Spjd	;;
613185029Spjd
614185029Spjdxencons)
615185029Spjd	mkdev xencons c %xencons_chr% 0
616185029Spjd	;;
617185029Spjd
618185029SpjdttyEstat)
619185029Spjd	mkdev ttyEstat c %wsdisplay_chr% 254
620185029Spjd	;;
621185029Spjd
622185029SpjdttyEcfg)
623168404Spjd	mkdev ttyEcfg c %wsdisplay_chr% 255
624168404Spjd	;;
625185029Spjd
626185029SpjdttyE*)
627185029Spjd	unit=${i#ttyE}
628185029Spjd	mkdev ttyE$unit c %wsdisplay_chr% $unit
629185029Spjd	;;
630185029Spjd
631185029Spjdwsmouse*)
632185029Spjd	unit=${i#wsmouse}
633185029Spjd	mkdev wsmouse$unit c %wsmouse_chr% $unit
634185029Spjd	;;
635185029Spjd
636185029Spjdwskbd*)
637185029Spjd	unit=${i#wskbd}
638185029Spjd	mkdev wskbd$unit c %wskbd_chr% $unit
639185029Spjd	;;
640185029Spjd
641185029Spjdfd)
642185029Spjd	if $nofdesc; then
643185029Spjd		makedir fd 755
644185029Spjd		n=0
645185029Spjd		while [ $n -lt 64 ]
646185029Spjd		do
647185029Spjd			mkdev fd/$n c %filedesc_chr% $n 666
648185029Spjd			n=$(($n + 1))
649185029Spjd		done
650185029Spjd	fi
651185029Spjd	;;
652185029Spjd
653185029Spjdwt*)
654185029Spjd	case $i in
655185029Spjd	wt*) name=wt;  unit=${i#wt};	chr=%wt_chr%;	blk=%wt_blk%;;
656185029Spjd	esac
657185029Spjd	for sub in $unit $(($unit+8)) $(($unit+16))
658185029Spjd	do
659185029Spjd		mkdev $name$sub		b $blk $(($sub + 0)) 660 $g_operator
660185029Spjd		mkdev n$name$sub	b $blk $(($sub + 4)) 660 $g_operator
661185029Spjd		mkdev r$name$sub	c $chr $(($sub + 0)) 660 $g_operator
662185029Spjd		mkdev nr$name$sub	c $chr $(($sub + 4)) 660 $g_operator
663185029Spjd	done
664185029Spjd	;;
665185029Spjd
666185029Spjdmd*)
667185029Spjd	makedisk_minimal md ${i#md} %md_blk% %md_chr%
668185029Spjd	;;
669168404Spjd
670185029Spjdfss*)
671168404Spjd	case $i in
672185029Spjd	fss*) name=fss; unit=${i#fss};	blk=%fss_blk%;	chr=%fss_chr%
673185029Spjd	esac
674185029Spjd	mkdev $name$unit	b $blk $unit 660 $g_operator
675185029Spjd	mkdev r$name$unit	c $chr $unit 660 $g_operator
676185029Spjd	;;
677168404Spjd
678185029Spjdss*)
679185029Spjd	case $i in
680168404Spjd	ss*) name=ss;	unit=${i#ss};	chr=%ss_chr%;;
681185029Spjd	esac
682168404Spjd	mkdev $name$unit	c $chr $(($unit * 16 + 0)) 640 $g_operator
683185029Spjd	mkdev n$name$unit	c $chr $(($unit * 16 + 1)) 640 $g_operator
684185029Spjd	mkdev en$name$unit	c $chr $(($unit * 16 + 3)) 640 $g_operator
685185029Spjd	;;
686185029Spjd
687185029Spjdccd*|cgd*|raid*|vnd*)
688185029Spjd	case $i in
689185029Spjd	ccd*)	name=ccd;	unit=${i#ccd};	blk=%ccd_blk%;	chr=%ccd_chr%;;
690185029Spjd	cgd*)	name=cgd;	unit=${i#cgd};	blk=%cgd_blk%;	chr=%cgd_chr%;;
691185029Spjd	raid*)	name=raid;	unit=${i#raid}; blk=%raid_blk%; chr=%raid_chr%;;
692185029Spjd	vnd*)	name=vnd;	unit=${i#vnd};	blk=%vnd_blk%;	chr=%vnd_chr%;;
693185029Spjd	esac
694185029Spjd	%MKDISK% $name $unit $blk $chr
695185029Spjd	;;
696185029Spjd
697185029Spjdsd*)
698168404Spjd	name=sd; unit=${i#sd};	blk=%sd_blk%;	chr=%sd_chr%
699168404Spjd	%MKDISK% $name $unit $blk $chr
700168404Spjd	;;
701168404Spjd
702168404Spjdwd*)
703168404Spjd	name=wd; unit=${i#wd}; blk=%wd_blk%; chr=%wd_chr%
704185029Spjd	%MKDISK% $name $unit $blk $chr
705185029Spjd	;;
706185029Spjd
707185029Spjdfd*)
708168404Spjd	name=fd; unit=${i#fd}; blk=%fd_blk%; chr=%fd_chr%
709168404Spjd	%MKDISK% $name $unit $blk $chr
710168404Spjd	;;
711185029Spjd
712185029Spjdld*)
713185029Spjd	name=ld; unit=${i#ld}; blk=%ld_blk%; chr=%ld_chr%
714185029Spjd	%MKDISK% $name $unit $blk $chr
715185029Spjd	;;
716185029Spjd
717185029Spjded*)
718185029Spjd	name=ed; unit=${i#ed}; blk=%ed_blk%; chr=%ed_chr%
719185029Spjd	%MKDISK% $name $unit $blk $chr
720185029Spjd	;;
721185029Spjd
722185029Spjdofdisk*)
723185029Spjd	name=ofdisk; unit=${i#ofdisk}; blk=%ofdisk_blk%; chr=%ofdisk_chr%
724185029Spjd	%MKDISK% $name $unit $blk $chr
725185029Spjd	;;
726185029Spjd
727168404Spjdxbd*)
728168404Spjd	name=xbd; unit=${i#xbd}; blk=%xbd_blk%; chr=%xbd_chr%
729168404Spjd	%MKDISK% $name $unit $blk $chr
730168404Spjd	;;
731168404Spjd
732168404SpjdttyCY*)
733185029Spjd	name=tyCY; chr=%cy_chr%; off=32
734185029Spjd	unit=${i#t${name}}
735185029Spjd	minor=$(($unit * $off))
736168404Spjd	eminor=$(($minor + $off))
737168404Spjd	while [ $minor -lt $eminor ]
738168404Spjd	do
739168404Spjd		# nminor=$(zeropad 3 $minor)
740168404Spjd		nminor=000$minor
741168404Spjd		nminor=${nminor#${nminor%???}}
742168404Spjd		mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp
743168404Spjd		mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp
744168404Spjd		minor=$(($minor + 1))
745168404Spjd	done
746168404Spjd	;;
747185029Spjd
748185029SpjdttyCZ*)
749185029Spjd	name=tyCZ; chr=%cz_chr%; off=64
750185029Spjd	unit=${i#t${name}}
751185029Spjd	minor=$(($unit * $off))
752185029Spjd	eminor=$(($minor + $off))
753185029Spjd	while [ $minor -lt $eminor ]
754185029Spjd	do
755185029Spjd		# nminor=$(zeropad 4 $minor)
756168404Spjd		nminor=0000$minor
757168404Spjd		nminor=${nminor#${nminor%????}}
758168404Spjd		mkdev t$name$nminor c $chr $(($minor + $dialin )) "" "" $u_uucp
759168404Spjd		mkdev d$name$nminor c $chr $(($minor + $dialout)) "" "" $u_uucp
760168404Spjd		minor=$(($minor + 1))
761168404Spjd	done
762168404Spjd	;;
763168404Spjd
764168404Spjd
765168404Spjdtty[0-9]|tty0[0-9])
766185029Spjd	# some archs have built-in zstty (major %zstty_chr%) instead
767168404Spjd	# of NS16550; create ttyZ* and hardlink as [dt]ty0*; this
768168404Spjd	# needs to be before com entry, for archs which have both
769168404Spjd	unit=${i#tty}
770168404Spjd	unit=$(($unit + 0))
771168404Spjd	makedev ttyZ${unit}
772168404Spjd	lndev ttyZ$unit tty0${unit}
773168404Spjd	lndev dtyZ$unit dty0${unit}
774168404Spjd	;;
775168404Spjd
776168404Spjdtty0*|tty1*|tty[0-9])
777168404Spjd	unit=${i#tty}
778168404Spjd	# ounit=$(zeropad 2 $unit)
779168404Spjd	ounit=00$unit
780168404Spjd	ounit=${ounit#${ounit%??}}
781168404Spjd	mkdev tty$ounit c %com_chr% $(($unit + $dialin )) "" "" $u_uucp
782168404Spjd	mkdev dty$ounit c %com_chr% $(($unit + $dialout)) "" "" $u_uucp
783168404Spjd	;;
784168404Spjd
785168404SpjdttyC*)
786168404Spjd		# some archs call com_chr ttyC traditionally
787168404Spjd	unit=${i#ttyC}; name=ttyC; dname=dtyC; chr=%com_chr%
788168404Spjd	mkdev  $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp
789168404Spjd	mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp
790185029Spjd	;;
791168404Spjd
792185029Spjdttyh*)
793168404Spjd	unit=${i#ttyh}; name=ttyh; dname=dtyh; chr=%sabtty_chr%
794168404Spjd	mkdev  $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp
795168404Spjd	mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp
796168404Spjd	;;
797168404Spjd
798168404SpjdttyTX*)
799168404Spjd	unit=${i#ttyTX}; name=ttyTX0; dname=dtyTX0; chr=%txcom_chr%
800168404Spjd	mkdev  $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp
801168404Spjd	mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp
802168404Spjd	;;
803168404Spjd
804168404SpjdttyZ*)
805168404Spjd	unit=${i#ttyZ}; name=ttyZ; dname=dtyZ; chr=%zstty_chr%
806168404Spjd	mkdev  $name$unit c $chr $(($unit + $dialin )) "" "" $u_uucp
807168404Spjd	mkdev $dname$unit c $chr $(($unit + $dialout)) "" "" $u_uucp
808168404Spjd	;;
809168404Spjd
810168404Spjdopty)
811168404Spjd	for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f
812168404Spjd	do
813168404Spjd		case $j in
814168404Spjd		[0-9])	jn=$j ;;
815168404Spjd		a)	jn=10 ;;
816168404Spjd		b)	jn=11 ;;
817168404Spjd		c)	jn=12 ;;
818168404Spjd		d)	jn=13 ;;
819168404Spjd		e)	jn=14 ;;
820168404Spjd		f)	jn=15 ;;
821168404Spjd		esac
822168404Spjd		mkdev ttyp$j c %pts_chr% $jn 666
823168404Spjd		mkdev ptyp$j c %ptc_chr% $jn 666
824168404Spjd	done
825168404Spjd	;;
826168404Spjd
827168404Spjdpty*)
828168404Spjd	class=${i#pty}
829168404Spjd	d1="p q r s t u v w x y z P Q R S T"
830168404Spjd	if [ "$class" -ge 64 ]
831168404Spjd	then
832168404Spjd		warn "$i: pty unit must be between 0 and 63"
833168404Spjd		continue
834168404Spjd	elif [ "$class" -lt 16 ]
835168404Spjd	then
836168404Spjd		offset=0
837168404Spjd		mult=0
838168404Spjd		d2="0 1 2 3 4 5 6 7 8 9 a b c d e f"
839168404Spjd	else
840168404Spjd		class=$(($class - 16))
841168404Spjd		offset=256
842168404Spjd		mult=2
843168404Spjd		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"
844168404Spjd	fi
845168404Spjd	start=$(($class * 16))
846168404Spjd	set -- $d2
847168404Spjd	nt=$#
848168404Spjd	s1=$(($start / $nt))
849168404Spjd	set -- $d1
850168404Spjd	shift $s1
851168404Spjd	t1=$1
852168404Spjd	if [ "$t1" = v ]; then
853168404Spjd		warn "$i: pty unit conflicts with console ttyv0 device"
854168404Spjd		continue
855168404Spjd	fi
856168404Spjd	s2=$(($start % ($nt - $s1 * $mult)))
857168404Spjd	set -- $d2
858168404Spjd	shift $s2
859168404Spjd	t2=$1
860168404Spjd	unit=$(($start + $offset - $s1 * $mult))
861168404Spjd	end=$(($unit + 16))
862168404Spjd	while [ "$unit" -lt "$end" ]
863168404Spjd	do
864168404Spjd		mkdev tty$t1$t2 c %pts_chr% $unit 666
865168404Spjd		mkdev pty$t1$t2 c %ptc_chr% $unit 666
866168404Spjd		shift
867168404Spjd		t2=$1
868168404Spjd		if [ -z "$t2" ]
869168404Spjd		then
870168404Spjd			break
871168404Spjd		fi
872168404Spjd		unit=$(($unit + 1))
873168404Spjd	done
874168404Spjd	;;
875168404Spjd
876168404Spjdstic*)
877168404Spjd	unit=${i#stic}
878168404Spjd	mkdev stic$unit c %stic_chr% $unit
879168404Spjd	;;
880168404Spjd
881168404Spjdst*)
882168404Spjd	case $i in
883168404Spjd	st*) name=st;	unit=${i#st};	chr=%st_chr%;	blk=%st_blk%;;
884168404Spjd	esac
885168404Spjd	mkdev $name$unit	b $blk $(($unit * 16 + 0)) 660 $g_operator
886168404Spjd	mkdev n$name$unit	b $blk $(($unit * 16 + 1)) 660 $g_operator
887168404Spjd	mkdev e$name$unit	b $blk $(($unit * 16 + 2)) 660 $g_operator
888168404Spjd	mkdev en$name$unit	b $blk $(($unit * 16 + 3)) 660 $g_operator
889168404Spjd	mkdev r$name$unit	c $chr $(($unit * 16 + 0)) 660 $g_operator
890168404Spjd	mkdev nr$name$unit	c $chr $(($unit * 16 + 1)) 660 $g_operator
891168404Spjd	mkdev er$name$unit	c $chr $(($unit * 16 + 2)) 660 $g_operator
892185029Spjd	mkdev enr$name$unit	c $chr $(($unit * 16 + 3)) 660 $g_operator
893185029Spjd	;;
894168404Spjd
895168404Spjdses*|ch*|uk*)
896168404Spjd	case $i in
897168404Spjd	ch*)	name=ch;	unit=${i#ch};	chr=%ch_chr%;;
898168404Spjd	uk*)	name=uk;	unit=${i#uk};	chr=%uk_chr%;;
899168404Spjd	ses*)	name=ses;	unit=${i#ses};	chr=%ses_chr%;;
900168404Spjd	esac
901168404Spjd	mkdev $name$unit c $chr $unit 640 $g_operator
902168404Spjd	;;
903168404Spjd
904168404Spjdcd*)
905168404Spjd	makedisk_minimal cd ${i#cd} %cd_blk% %cd_chr% %
906168404Spjd	;;
907168404Spjd
908168404Spjdmcd*)
909168404Spjd	makedisk_minimal mcd ${i#mcd} %mcd_blk% %mcd_chr%
910168404Spjd	;;
911168404Spjd
912168404Spjdgdrom*)
913168404Spjd	makedisk_minimal gdrom ${i#gdrom} %gdrom_blk% %gdrom_chr%
914168404Spjd	;;
915168404Spjd
916168404Spjdlpt*|lpa*)
917168404Spjd	case $i in
918168404Spjd	lpt*) name=lpt;	unit=${i#lpt};	chr=%lpt_chr%;	flags=0;;
919168404Spjd	lpa*) name=lpa;	unit=${i#lpa};	chr=%lpt_chr%;	flags=128;;
920168404Spjd	esac
921168404Spjd	mkdev $name$unit c $chr $(($unit + $flags))
922168404Spjd	mkdev lpt${unit}ctl c $chr $(($unit + 256))
923168404Spjd	;;
924168404Spjd
925168404Spjdbpf)
926168404Spjd	mkdev bpf	c %bpf_chr% 0
927168404Spjd	lndev bpf bpf0
928168404Spjd	;;
929168404Spjd
930168404Spjdtun*)
931168404Spjd	unit=${i#tun}
932168404Spjd	mkdev tun$unit c %tun_chr% $unit
933168404Spjd	;;
934168404Spjd
935168404Spjdjoy*)
936168404Spjd	unit=${i#joy}
937168404Spjd	mkdev joy$unit c %joy_chr% $unit
938168404Spjd	;;
939168404Spjd
940168404Spjdipl)
941168404Spjd	mkdev ipl	c %ipl_chr% 0
942168404Spjd	mkdev ipnat	c %ipl_chr% 1
943168404Spjd	mkdev ipstate	c %ipl_chr% 2
944168404Spjd	mkdev ipauth	c %ipl_chr% 3
945168404Spjd	;;
946168404Spjd
947168404Spjdpf)
948168404Spjd	mkdev pf c %pf_chr% 0
949168404Spjd	;;
950168404Spjd
951168404Spjdcrypto)
952168404Spjd	mkdev crypto c %crypto_chr% 0 666
953168404Spjd	;;
954168404Spjd
955168404Spjdspeaker)
956168404Spjd	mkdev speaker c %spkr_chr% 0
957168404Spjd	;;
958168404Spjd
959168404Spjdlkm)
960168404Spjd	mkdev lkm c %lkm_chr% 0 640 $g_kmem
961168404Spjd	;;
962168404Spjd
963168404Spjdaudio*)
964168404Spjd	unit=${i#audio}
965168404Spjd	audio=audio$unit
966168404Spjd	sound=sound$unit
967168404Spjd	mixer=mixer$unit
968168404Spjd	audioctl=audioctl$unit
969168404Spjd	: ${unit:-0}
970168404Spjd	mkdev $sound    c %audio_chr% $(($unit + 0))	666
971168404Spjd	mkdev $audio    c %audio_chr% $(($unit + 128))	666
972168404Spjd	mkdev $mixer    c %audio_chr% $(($unit + 16))	666
973168404Spjd	mkdev $audioctl c %audio_chr% $(($unit + 192))	666
974168404Spjd	;;
975168404Spjd
976168404Spjdgpio*)
977168404Spjd	unit=${i#gpio}
978168404Spjd	mkdev gpio$unit c %gpio_chr% $unit 644
979168404Spjd	;;
980168404Spjd
981168404Spjdrmidi*)
982168404Spjd	unit=${i#rmidi}
983168404Spjd	mkdev rmidi$unit c %midi_chr% $unit 666
984168404Spjd	;;
985168404Spjd
986168404Spjdmusic*)
987168404Spjd	unit=${i#music}
988168404Spjd	: ${unit:-0}
989185029Spjd	mkdev music$unit     c %sequencer_chr% $(($unit + 0))	666
990168404Spjd	mkdev sequencer$unit c %sequencer_chr% $(($unit + 128))	666
991168404Spjd	;;
992168404Spjd
993168404Spjdradio*)
994168404Spjd	unit=${i#radio}
995168404Spjd	: ${unit:-0}
996168404Spjd	mkdev radio$unit c %radio_chr% $unit 666
997168404Spjd	;;
998185029Spjd
999168404Spjdapm)
1000168404Spjd	mkdev apm	c %apm_chr% 0 644
1001168404Spjd	mkdev apmctl	c %apm_chr% 8 644
1002168404Spjd	;;
1003168404Spjd
1004168404Spjdapm)
1005168404Spjd		# hpcmips uses `apmdev_chr' instead of `apm_chr'
1006168404Spjd	mkdev apm	c %apmdev_chr% 0 644
1007168404Spjd	mkdev apmctl	c %apmdev_chr% 8 644
1008168404Spjd	;;
1009168404Spjd
1010168404Spjdsatlink*)
1011168404Spjd	unit=${i#satlink}
1012168404Spjd	mkdev satlink$unit c %satlink_chr% $unit 444
1013185029Spjd	;;
1014168404Spjd
1015168404Spjdrandom)
1016168404Spjd	mkdev random	c %rnd_chr% 0 444
1017168404Spjd	mkdev urandom	c %rnd_chr% 1 644
1018168404Spjd	;;
1019168404Spjd
1020168404Spjdcfs*)
1021168404Spjd	unit=${i#cfs}
1022168404Spjd	mkdev cfs$unit c %vcoda_chr% $unit
1023168404Spjd	;;
1024168404Spjd
1025168404Spjdsysmon)
1026168404Spjd	mkdev sysmon	c %sysmon_chr% 0 644
1027168404Spjd	mkdev watchdog	c %sysmon_chr% 1 644
1028168404Spjd	mkdev power	c %sysmon_chr% 2 640
1029168404Spjd	;;
1030168404Spjd
1031168404Spjdscsibus*)
1032168404Spjd	unit=${i#scsibus}
1033168404Spjd	mkdev scsibus$unit c %scsibus_chr% $unit 644
1034168404Spjd	;;
1035168404Spjd
1036168404Spjdbktr)
1037168404Spjd	makedev bktr0 bktr1
1038168404Spjd	lndev	bktr0	bktr
1039168404Spjd	lndev	tuner0	tuner
1040168404Spjd	lndev	vbi0	vbi
1041168404Spjd	;;
1042168404Spjd
1043168404Spjdbktr*)
1044168404Spjd	unit=${i#bktr}
1045168404Spjd	mkdev bktr$unit		c %bktr_chr% $(($unit + 0))	444
1046168404Spjd	mkdev tuner$unit	c %bktr_chr% $(($unit + 16))	444
1047168404Spjd	mkdev vbi$unit		c %bktr_chr% $(($unit + 32))	444
1048168404Spjd	;;
1049185029Spjd
1050168404Spjdiop*)
1051168404Spjd	unit=${i#iop}
1052168404Spjd	mkdev iop$unit c %iop_chr% $unit
1053168404Spjd	;;
1054168404Spjd
1055168404Spjdmlx*)
1056168404Spjd	unit=${i#mlx}
1057168404Spjd	mkdev mlx$unit c %mlx_chr% $unit
1058168404Spjd	;;
1059168404Spjd
1060168404Spjdmly*)
1061168404Spjd	unit=${i#mly}
1062168404Spjd	mkdev mly$unit c %mly_chr% $unit
1063168404Spjd	;;
1064168404Spjd
1065168404Spjdtwe*)
1066168404Spjd	unit=${i#twe}
1067168404Spjd	mkdev twe$unit c %twe_chr% $unit
1068168404Spjd	;;
1069168404Spjd
1070168404Spjdicp*)
1071168404Spjd	unit=${i#icp}
1072168404Spjd	mkdev icp$unit c %icp_chr% $unit
1073168404Spjd	;;
1074168404Spjd
1075168404Spjdagp*)
1076168404Spjd	unit=${i#agp}
1077168404Spjd	mkdev agp$unit c %agp_chr% $unit 644
1078191900Skmacy	if [ "$unit" = "0" ]; then
1079168404Spjd		lndev agp$unit agpgart
1080168404Spjd	fi
1081168404Spjd	;;
1082168404Spjd
1083185029Spjdpci*)
1084168404Spjd	unit=${i#pci}
1085168404Spjd	mkdev pci$unit c %pci_chr% $unit 644
1086168404Spjd	;;
1087168404Spjd
1088168404Spjddpti*)
1089168404Spjd	unit=${i#dpti}
1090168404Spjd	mkdev dpti$unit c %dpti_chr% $unit
1091168404Spjd	;;
1092168404Spjd
1093185029Spjddpt*)
1094168404Spjd	unit=${i#dpt}
1095168404Spjd	mkdev dpt$unit c %dpt_chr% $unit
1096168404Spjd	;;
1097168404Spjd
1098168404Spjdaltq)
1099168404Spjd	makedir altq 755
1100168404Spjd	unit=0
1101168404Spjd	for dev in altq cbq wfq afm fifoq red rio localq hfsc cdnr blue priq
1102168404Spjd	do
1103168404Spjd		mkdev altq/$dev c %altq_chr% $unit 644
1104168404Spjd		unit=$(($unit + 1))
1105168404Spjd	done
1106168404Spjd	;;
1107168404Spjd
1108168404Spjdisdn)
1109168404Spjd	mkdev isdn c %isdn_chr% 0
1110168404Spjd	;;
1111168404Spjd
1112168404Spjdisdnctl)
1113168404Spjd	mkdev isdnctl c %isdnctl_chr% 0
1114168404Spjd	;;
1115168404Spjd
1116168404Spjdisdnbchan*)
1117168404Spjd	unit=${i#isdnbchan}
1118168404Spjd	mkdev isdnbchan$unit c %isdnbchan_chr% $unit
1119168404Spjd	;;
1120168404Spjd
1121168404Spjdisdnteld*)
1122168404Spjd	unit=${i#isdnteld}
1123168404Spjd	mkdev isdnteld$unit c %isdntel_chr% $(($unit + 64))
1124168404Spjd	;;
1125168404Spjd
1126168404Spjdisdntel*)
1127168404Spjd	unit=${i#isdntel}
1128168404Spjd	mkdev isdntel$unit c %isdntel_chr% $unit
1129168404Spjd	;;
1130168404Spjd
1131168404Spjdisdntrc*)
1132168404Spjd	unit=${i#isdntrc}
1133168404Spjd	mkdev isdntrc$unit c %isdntrc_chr% $unit
1134168404Spjd	;;
1135168404Spjd
1136168404Spjdvmegen)
1137168404Spjd	makedev vmegen0 vmegen1 vmegen2 vmegen3
1138168404Spjd	;;
1139168404Spjd
1140168404Spjdvmegen*)
1141168404Spjd	unit=${i#vmegen}
1142168404Spjd	mkdev vmegen$unit c %vmegeneric_chr% $(($unit * 16 + 0))
1143168404Spjd	;;
1144168404Spjd
1145168404Spjdwsfont)
1146168404Spjd	mkdev wsfont c %wsfont_chr% 0
1147168404Spjd	;;
1148168404Spjd
1149168404Spjdcir*)
1150168404Spjd	unit=${i#cir}
1151168404Spjd	mkdev cir$unit c %cir_chr% $unit 666
1152185029Spjd	;;
1153168404Spjd
1154168404Spjdirframe*)
1155168404Spjd	unit=${i#irframe}
1156168404Spjd	mkdev irframe$unit c %irframe_chr% $unit
1157168404Spjd	;;
1158168404Spjd
1159168404Spjdfcom*)
1160168404Spjd	unit=${i#fcom}
1161168404Spjd	mkdev fcom$unit c %fcom_chr% $unit "" "" $u_uucp
1162168404Spjd	;;
1163168404Spjd
1164185029Spjdopenfirm)
1165168404Spjd	mkdev openfirm c %openfirm_chr% 0 444
1166168404Spjd	;;
1167168404Spjd
1168168404Spjdnvram)
1169168404Spjd	mkdev nvram c %nvram_chr% 0 644
1170168404Spjd	;;
1171168404Spjd
1172168404Spjdrtc)
1173168404Spjd	mkdev rtc c %rtc_chr% 0 644
1174168404Spjd	;;
1175168404Spjd
1176168404Spjdclockctl)
1177168404Spjd	mkdev clockctl c %clockctl_chr% 0 660 $g_ntpd
1178168404Spjd	;;
1179168404Spjd
1180168404Spjdnsmb)
1181168404Spjd	makedev nsmb0 nsmb1 nsmb2 nsmb3
1182168404Spjd	;;
1183168404Spjd
1184168404Spjdnsmb*)
1185168404Spjd	unit=${i#nsmb}
1186168404Spjd	mkdev nsmb$unit c %nsmb_chr% $unit 644
1187168404Spjd	;;
1188168404Spjd
1189168404Spjdsystrace)
1190168404Spjd	mkdev systrace c %systrace_chr% 0 644
1191168404Spjd	;;
1192168404Spjd
1193168404Spjdkttcp)
1194168404Spjd	mkdev kttcp c %kttcp_chr% 0
1195168404Spjd	;;
1196168404Spjd
1197168404Spjddmoverio)
1198185029Spjd	mkdev dmoverio c %dmoverio_chr% 0 644
1199168404Spjd	;;
1200185029Spjd
1201168404Spjdveriexec)
1202168404Spjd	mkdev veriexec c %veriexec_chr% 0 600
1203168404Spjd	;;
1204168404Spjd
1205168404Spjdttyv*)
1206168404Spjd	unit=${i#ttyv}
1207168404Spjd	mkdev ttyv$unit c %pc_chr% $unit
1208168404Spjd	;;
1209168404Spjd
1210168404Spjd# arm, acorn32
1211168404Spjdttyv*)
1212168404Spjd	unit=${i#ttyv}
1213168404Spjd	mkdev ttyv$unit c %physcon_chr% $unit
1214168404Spjd	;;
1215168404Spjd
1216168404Spjdarcpp*)
1217168404Spjd	unit=${i#arcpp}
1218168404Spjd	mkdev arcpp$unit c %arcpp_chr% $unit
1219168404Spjd	;;
1220168404Spjd
1221168404Spjdpar*)
1222168404Spjd	unit=${i#par}
1223168404Spjd	case $unit in
1224168404Spjd	0)
1225168404Spjd		mkdev par$unit c %par_chr% $unit
1226168404Spjd		;;
1227168404Spjd	*)
1228168404Spjd		warn "bad unit for par in: $i"
1229168404Spjd		;;
1230168404Spjd	esac
1231168404Spjd	;;
1232168404Spjd
1233168404Spjdite*|ttye*)
1234168404Spjd	case $i in
1235168404Spjd	ite*)	unit=${i#ite};;
1236168404Spjd	ttye*)	unit=${i#ttye};;
1237168404Spjd	esac
1238168404Spjd	mkdev ttye$unit	c %ite_chr% $unit
1239168404Spjd	;;
1240168404Spjd
1241168404Spjdpms*)
1242168404Spjd	unit=${i#pms}
1243168404Spjd	mkdev pms$unit c %opms_chr% $unit
1244168404Spjd	;;
1245168404Spjd
1246168404Spjdqms*)
1247168404Spjd	unit=${i#qms}
1248168404Spjd	mkdev qms$unit c %qms_chr% $unit
1249168404Spjd	;;
1250168404Spjd
1251168404Spjdlms*)
1252168404Spjd	unit=${i#lms}
1253168404Spjd	mkdev lms$unit c %lms_chr% $unit
1254168404Spjd	;;
1255168404Spjd
1256168404Spjdmms*)
1257168404Spjd	unit=${i#mms}
1258168404Spjd	mkdev mms$unit c %mms_chr% $unit
1259168404Spjd	;;
1260168404Spjd
1261168404Spjdmouse-*)
1262168404Spjd	case $i in
1263168404Spjd	mouse-pms*) name=pms ;;
1264168404Spjd	mouse-qms*) name=qms ;;
1265168404Spjd	esac
1266168404Spjd	unit=${i#mouse-${name}}
1267168404Spjd	lndev $name$unit mouse
1268168404Spjd	;;
1269168404Spjd
1270168404Spjdkbd)
1271168404Spjd	mkdev kbd c %kbd_chr% 0
1272168404Spjd	;;
1273168404Spjd
1274168404Spjdkbdctl)
1275168404Spjd	mkdev kbdctl c %kbd_chr% 1
1276168404Spjd	;;
1277168404Spjd
1278168404Spjdvidcconsole0)
1279168404Spjd	mkdev vidcconsole0 c %vidcconsole_chr% 0 640
1280168404Spjd	;;
1281168404Spjd
1282168404Spjdview*)
1283168404Spjd	unit=${i#view}
1284168404Spjd	mkdev view$unit	c %view_chr% $unit 666
1285168404Spjd	;;
1286168404Spjd
1287168404Spjdmouse*)
1288168404Spjd	unit=${i#mouse}
1289168404Spjd	case $unit in
1290168404Spjd	0|1)
1291168404Spjd		mkdev mouse$unit c %ms_chr% $unit 666
1292168404Spjd		if [ $unit = 0 ]; then
1293168404Spjd			lndev mouse$unit mouse
1294168404Spjd		fi
1295168404Spjd		;;
1296168404Spjd	*)
1297168404Spjd		warn "bad unit for mouse in: $i"
1298168404Spjd		;;
1299168404Spjd	esac
1300168404Spjd	;;
1301168404Spjd
1302168404Spjdpanel)
1303168404Spjd	mkdev panel0 c %panel_chr% 0 660
1304168404Spjd	;;
1305168404Spjd
1306168404Spjdtslcd)
1307168404Spjd	mkdev tslcd0 c %tslcd_chr% 0 660
1308168404Spjd	;;
1309168404Spjd
1310168404Spjdipty)
1311168404Spjd	mkdev ttyp0 c %pts_chr% 0 666
1312168404Spjd	mkdev ttyp1 c %pts_chr% 1 666
1313168404Spjd	mkdev ptyp0 c %ptc_chr% 0 666
1314168404Spjd	mkdev ptyp1 c %ptc_chr% 1 666
1315168404Spjd	;;
1316168404Spjd
1317168404Spjdptm)
1318168404Spjd	mkdev ptmx c %ptm_chr% 0 666
1319168404Spjd	mkdev ptm c %ptm_chr% 1 666
1320168404Spjd	;;
1321168404Spjd
1322168404Spjdgrf*)
1323168404Spjd	unit=${i#grf}
1324168404Spjd	mkdev grf$unit c %grf_chr% $unit 666
1325168404Spjd	;;
1326168404Spjd
1327168404Spjdetvme)
1328168404Spjd	mkdev etvme c %et_chr% 0
1329168404Spjd	;;
1330168404Spjd
1331168404Spjdleo*)
1332168404Spjd	unit=${i#leo}
1333168404Spjd	mkdev leo$unit c %leo_chr% $unit
1334168404Spjd	;;
1335168404Spjd
1336168404Spjdscif*)
1337168404Spjd	unit=${i#scif}
1338168404Spjd	mkdev scif$unit c %scif_chr% $unit "" "" $u_uucp
1339168404Spjd	;;
1340168404Spjd
1341168404Spjdsci*)
1342185029Spjd	unit=${i#sci}
1343168404Spjd	mkdev sci$unit c %sci_chr% $unit "" "" $u_uucp
1344185029Spjd	;;
1345185029Spjd
1346185029Spjdmaple*)
1347185029Spjd	case $i in
1348185029Spjd	mapleA*) name="mapleA"; unit=0;;
1349185029Spjd	mapleB*) name="mapleB"; unit=1;;
1350168404Spjd	mapleC*) name="mapleC"; unit=2;;
1351168404Spjd	mapleD*) name="mapleD"; unit=3;;
1352168404Spjd	esac
1353168404Spjd	subunit=${i#$name}
1354168404Spjd	mkdev $name$subunit c %maple_chr% $(($unit * 8 + 0$subunit))
1355168404Spjd	;;
1356168404Spjd
1357168404Spjdmmem*)
1358168404Spjd	unit=${i#mmem}
1359168404Spjd	for pt in 0	# 1 2 3 4 ... 255
1360168404Spjd	do
1361168404Spjd#		mkdev mmem${unit}.${pt}a  b %mmem_blk% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator
1362168404Spjd		mkdev mmem${unit}.${pt}c  b %mmem_blk% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator
1363168404Spjd#		mkdev rmmem${unit}.${pt}a c %mmem_chr% $(($unit * 4096 + $pt * 16 + 0)) 640 $g_operator
1364168404Spjd		mkdev rmmem${unit}.${pt}c c %mmem_chr% $(($unit * 4096 + $pt * 16 + 2)) 640 $g_operator
1365168404Spjd	done
1366168404Spjd	;;
1367168404Spjd
1368185029Spjdmlcd*)
1369185029Spjd	unit=${i#mlcd}
1370168404Spjd	for pt in 0	# 1 2 3 4 ... 255
1371168404Spjd	do
1372168404Spjd		mkdev mlcd${unit}.${pt} c %mlcd_chr% $(($unit * 256 + $pt)) 640 $g_operator
1373168404Spjd	done
1374168404Spjd	;;
1375185029Spjd
1376185029Spjdixpcom*)
1377185029Spjd	unit=${i#ixpcom}
1378168404Spjd	mkdev ixpcom$unit c %ixpcom_chr% $unit "" "" $u_uucp
1379168404Spjd	;;
1380168404Spjd
1381168404Spjdepcom*)
1382168404Spjd	unit=${i#epcom}
1383168404Spjd	mkdev epcom$unit c %epcom_chr% $unit "" "" $u_uucp
1384168404Spjd	;;
1385168404Spjd
1386168404Spjducbsnd)
1387168404Spjd	mkdev ucbsnd c %ucbsnd_chr% 0 666
1388168404Spjd	;;
1389168404Spjd
1390168404Spjdadb)
1391168404Spjd	mkdev adb c %aed_chr% 0 666
1392168404Spjd	;;
1393168404Spjd
1394168404Spjdasc*)
1395168404Spjd	unit=${i#asc}
1396168404Spjd	mkdev asc$unit c %asc_chr% $unit 666
1397168404Spjd	;;
1398168404Spjd
1399168404Spjdbwtwo*)
1400168404Spjd	unit=${i#bwtwo}
1401168404Spjd	mkdev bwtwo$unit c %bwtwo_chr% $unit 666
1402168404Spjd	;;
1403168404Spjd
1404168404Spjdcgtwo*)
1405168404Spjd	unit=${i#cgtwo}
1406168404Spjd	mkdev cgtwo$unit c %cgtwo_chr% $unit 666
1407168404Spjd	;;
1408168404Spjd
1409168404Spjdcgthree*)
1410168404Spjd	unit=${i#cgthree}
1411168404Spjd	mkdev cgthree$unit c %cgthree_chr% $unit 666
1412168404Spjd	;;
1413168404Spjd
1414168404Spjdcgfour*)
1415168404Spjd	unit=${i#cgfour}
1416168404Spjd	mkdev cgfour$unit c %cgfour_chr% $unit 666
1417168404Spjd	;;
1418168404Spjd
1419168404Spjdcgsix*)
1420168404Spjd	unit=${i#cgsix}
1421168404Spjd	mkdev cgsix$unit c %cgsix_chr% $unit 666
1422168404Spjd	;;
1423168404Spjd
1424168404Spjdcgeight*)
1425168404Spjd	unit=${i#cgeight}
1426168404Spjd	mkdev cgeight$unit c %cgeight_chr% $unit 666
1427168404Spjd	;;
1428168404Spjd
1429168404Spjdtcx*)
1430168404Spjd	unit=${i#tcx}
1431168404Spjd	mkdev tcx$unit c %tcx_chr% $unit 666
1432168404Spjd	;;
1433168404Spjd
1434168404Spjdxd*|xy*)
1435168404Spjd	case $i in
1436200724Sdelphij	xd*)	name=xd; unit=${i#xd}; blk=%xd_blk%;	chr=%xd_chr%;;
1437168404Spjd	xy*)	name=xy; unit=${i#xy}; blk=%xy_blk%;	chr=%xy_chr%;;
1438168404Spjd	esac
1439168404Spjd	%MKDISK% $name $unit $blk $chr
1440168404Spjd	;;
1441168404Spjd
1442168404Spjdmagma*)
1443168404Spjd	unit=${i#magma}
1444168404Spjd	if [ 0$unit -gt 3 ]; then
1445168404Spjd		warn "bad unit for $i: $unit"
1446168404Spjd		break
1447168404Spjd	fi
1448168404Spjd	for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f
1449168404Spjd	do
1450168404Spjd		case $j in
1451168404Spjd		[0-9])	jn=$j ;;
1452168404Spjd		a)	jn=10 ;;
1453168404Spjd		b)	jn=11 ;;
1454168404Spjd		c)	jn=12 ;;
1455168404Spjd		d)	jn=13 ;;
1456168404Spjd		e)	jn=14 ;;
1457168404Spjd		f)	jn=15 ;;
1458168404Spjd		esac
1459168404Spjd		mkdev tty$unit$j c %mtty_chr% $(($unit * 64 + $jn))
1460168404Spjd	done
1461168404Spjd	mkdev bpp${unit}0 c %mbpp_chr% $(($unit * 64 + 0))
1462168404Spjd	mkdev bpp${unit}1 c %mbpp_chr% $(($unit * 64 + 1))
1463168404Spjd	;;
1464168404Spjd
1465168404Spjdclcd*)
1466168404Spjd	unit=${i#clcd}
1467168404Spjd	if [ 0$unit -gt 7 ]; then
1468168404Spjd		warn "bad unit for $i: $unit"
1469168404Spjd		break
1470168404Spjd	fi
1471168404Spjd	for j in 0 1 2 3 4 5 6 7
1472168404Spjd	do
1473168404Spjd		mkdev ttyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialin)) "" "" $u_uucp
1474168404Spjd		mkdev dtyA$unit$j c %clcd_chr% $(($unit * 8 + $j + $dialout)) "" "" $u_uucp
1475168404Spjd	done
1476168404Spjd	;;
1477168404Spjd
1478168404Spjdspif*)
1479168404Spjd	unit=${i#spif}
1480168404Spjd	if [ 0$unit -gt 3 ]; then
1481168404Spjd		warn "bad unit for $i: $unit"
1482168404Spjd		break
1483168404Spjd	fi
1484168404Spjd	for j in 0 1 2 3 4 5 6 7; do
1485185029Spjd		mkdev ttyS$unit$j c 102 $(($unit * 64 + $j)) "" "" $u_uucp
1486168404Spjd	done
1487168404Spjd	mkdev bppS${unit}0 c 103 $(($unit * 64 + 0))
1488168404Spjd	mkdev bppS${unit}1 c 103 $(($unit * 64 + 1))
1489168404Spjd	;;
1490168404Spjd
1491168404Spjdbpp*)
1492168404Spjd	unit=${i#bpp}
1493168404Spjd	mkdev bpp$unit c %bpp_chr% $(($unit + 0))
1494168404Spjd	;;
1495168404Spjd
1496168404Spjdtctrl*)
1497168404Spjd	unit=${i#tctrl}
1498168404Spjd	mkdev tctrl$unit c %tctrl_chr% $unit 666
1499168404Spjd	;;
1500168404Spjd
1501168404Spjdbmd*)
1502168404Spjd	unit=${i#bmd}
1503168404Spjd	mkdev bmd${unit}a  b %bmd_blk% $(($unit * 8 + 0)) 640 $g_operator
1504168404Spjd	mkdev bmd${unit}c  b %bmd_blk% $(($unit * 8 + 2)) 640 $g_operator
1505168404Spjd	mkdev rbmd${unit}a c %bmd_chr% $(($unit * 8 + 0)) 640 $g_operator
1506168404Spjd	mkdev rbmd${unit}c c %bmd_chr% $(($unit * 8 + 2)) 640 $g_operator
1507168404Spjd	;;
1508168404Spjd
1509168404Spjdsram)
1510168404Spjd	mkdev sram c %sram_chr% 0 644
1511185029Spjd	;;
1512185029Spjd
1513185029Spjdpow*)
1514168404Spjd	unit=${i#pow}
1515168404Spjd	case $unit in
1516168404Spjd	0|1)
1517168404Spjd		mkdev pow${unit} c %pow_chr% ${unit} 644
1518168404Spjd		if [ $unit = 0 ]; then
1519168404Spjd			lndev pow${unit} pow
1520168404Spjd		fi
1521168404Spjd		;;
1522168404Spjd	*)
1523168404Spjd		warn "bad unit for pow in: $i"
1524168404Spjd		;;
1525168404Spjd	esac
1526168404Spjd	;;
1527168404Spjd
1528168404SpjdttyS*)
1529168404Spjd	unit=${i#ttyS}
1530168404Spjd	mkdev ttyS$unit c %sacom_chr% $(($unit + $dialin )) "" "" $u_uucp
1531168404Spjd	mkdev dtyS$unit c %sacom_chr% $(($unit + $dialout)) "" "" $u_uucp
1532168404Spjd	;;
1533168404Spjd
1534168404Spjdatabus*)
1535168404Spjd	unit=${i#atabus}
1536168404Spjd	mkdev atabus$unit c %atabus_chr% $unit 644
1537168404Spjd	;;
1538168404Spjd
1539168404Spjddrvctl)
1540168404Spjd	mkdev drvctl c %drvctl_chr% 0 644
1541168404Spjd	;;
1542168404Spjd
1543168404Spjdtap*)
1544168404Spjd	unit=${i#tap}
1545168404Spjd	case "$unit" in
1546168404Spjd	[0-9]*)
1547168404Spjd		mkdev tap${unit} c %tap_chr% ${unit} 600
1548168404Spjd		;;
1549168404Spjd	*)
1550168404Spjd		mkdev tap c %tap_chr% 0xfffff 600
1551168404Spjd		;;
1552168404Spjd	esac
1553168404Spjd	;;
1554168404Spjd
1555168404Spjdfw*)
1556168404Spjd	unit=${i#fw}
1557168404Spjd	for j in 0 1 2 3
1558168404Spjd	do
1559168404Spjd		mkdev fw${unit}.${j} c %fw_chr% $((${unit} * 256 + ${j})) 660 ${g_operator}
1560168404Spjd		mkdev fwmem${unit}.${j} c %fw_chr% $((65536 + ${unit} * 256 + ${j})) 660 ${g_operator}
1561168404Spjd	done
1562168404Spjd	;;
1563168404Spjd
1564168404Spjdmidevend)
1565168404Spjd%MI_DEVICES_END%
1566168404Spjdlocal)
1567168404Spjd	if [ -f "$0.local" ]; then
1568168404Spjd		umask 0
1569168404Spjd		sh $0.local all
1570168404Spjd		umask 077
1571168404Spjd	fi
1572168404Spjd	;;
1573168404Spjd
1574168404Spjd*)
1575168404Spjd	warn "$i: unknown device"
1576168404Spjd	;;
1577168404Spjd
1578168404Spjdesac
1579168404Spjddone
1580168404Spjd
1581168404Spjd}
1582168404Spjd
1583168404Spjd
1584168404Spjd# three variants of disk partitions - max 8, max 16, max 16 with highpartoffset
1585168404Spjd# hack; only the one used by port is retained in final MAKEDEV script
1586168404Spjd# routine is called as:
1587168404Spjd# makedisk name unit blk chr
1588185029Spjdmakedisk_p8()
1589185029Spjd{
1590168404Spjd	name="$1"; unit="$2"; blk="$3"; chr="$4"
1591168404Spjd
1592168404Spjd	mkdev ${name}${unit}a	b $blk $(($unit * 8 + 0))	640 $g_operator
1593185029Spjd	mkdev ${name}${unit}b	b $blk $(($unit * 8 + 1))	640 $g_operator
1594168404Spjd	mkdev ${name}${unit}c	b $blk $(($unit * 8 + 2))	640 $g_operator
1595168404Spjd	mkdev ${name}${unit}d	b $blk $(($unit * 8 + 3))	640 $g_operator
1596168404Spjd	mkdev ${name}${unit}e	b $blk $(($unit * 8 + 4))	640 $g_operator
1597168404Spjd	mkdev ${name}${unit}f	b $blk $(($unit * 8 + 5))	640 $g_operator
1598168404Spjd	mkdev ${name}${unit}g	b $blk $(($unit * 8 + 6))	640 $g_operator
1599168404Spjd	mkdev ${name}${unit}h	b $blk $(($unit * 8 + 7))	640 $g_operator
1600168404Spjd	mkdev r${name}${unit}a	c $chr $(($unit * 8 + 0))	640 $g_operator
1601168404Spjd	mkdev r${name}${unit}b	c $chr $(($unit * 8 + 1))	640 $g_operator
1602168404Spjd	mkdev r${name}${unit}c	c $chr $(($unit * 8 + 2))	640 $g_operator
1603168404Spjd	mkdev r${name}${unit}d	c $chr $(($unit * 8 + 3))	640 $g_operator
1604168404Spjd	mkdev r${name}${unit}e	c $chr $(($unit * 8 + 4))	640 $g_operator
1605168404Spjd	mkdev r${name}${unit}f	c $chr $(($unit * 8 + 5))	640 $g_operator
1606168404Spjd	mkdev r${name}${unit}g	c $chr $(($unit * 8 + 6))	640 $g_operator
1607168404Spjd	mkdev r${name}${unit}h	c $chr $(($unit * 8 + 7))	640 $g_operator
1608168404Spjd}
1609168404Spjd
1610168404Spjdmakedisk_p16()
1611168404Spjd{
1612168404Spjd	name="$1"; unit="$2"; blk="$3"; chr="$4"
1613168404Spjd
1614168404Spjd	mkdev ${name}${unit}a	b $blk $(($unit * 16 + 0))	640 $g_operator
1615168404Spjd	mkdev ${name}${unit}b	b $blk $(($unit * 16 + 1))	640 $g_operator
1616185029Spjd	mkdev ${name}${unit}c	b $blk $(($unit * 16 + 2))	640 $g_operator
1617185029Spjd	mkdev ${name}${unit}d	b $blk $(($unit * 16 + 3))	640 $g_operator
1618168404Spjd	mkdev ${name}${unit}e	b $blk $(($unit * 16 + 4))	640 $g_operator
1619168404Spjd	mkdev ${name}${unit}f	b $blk $(($unit * 16 + 5))	640 $g_operator
1620168404Spjd	mkdev ${name}${unit}g	b $blk $(($unit * 16 + 6))	640 $g_operator
1621168404Spjd	mkdev ${name}${unit}h	b $blk $(($unit * 16 + 7))	640 $g_operator
1622168404Spjd	mkdev ${name}${unit}i	b $blk $(($unit * 16 + 8))	640 $g_operator
1623168404Spjd	mkdev ${name}${unit}j	b $blk $(($unit * 16 + 9))	640 $g_operator
1624168404Spjd	mkdev ${name}${unit}k	b $blk $(($unit * 16 + 10))	640 $g_operator
1625168404Spjd	mkdev ${name}${unit}l	b $blk $(($unit * 16 + 11))	640 $g_operator
1626168404Spjd	mkdev ${name}${unit}m	b $blk $(($unit * 16 + 12))	640 $g_operator
1627168404Spjd	mkdev ${name}${unit}n	b $blk $(($unit * 16 + 13))	640 $g_operator
1628168404Spjd	mkdev ${name}${unit}o	b $blk $(($unit * 16 + 14))	640 $g_operator
1629168404Spjd	mkdev ${name}${unit}p	b $blk $(($unit * 16 + 15))	640 $g_operator
1630168404Spjd	mkdev r${name}${unit}a	c $chr $(($unit * 16 + 0))	640 $g_operator
1631168404Spjd	mkdev r${name}${unit}b	c $chr $(($unit * 16 + 1))	640 $g_operator
1632168404Spjd	mkdev r${name}${unit}c	c $chr $(($unit * 16 + 2))	640 $g_operator
1633168404Spjd	mkdev r${name}${unit}d	c $chr $(($unit * 16 + 3))	640 $g_operator
1634168404Spjd	mkdev r${name}${unit}e	c $chr $(($unit * 16 + 4))	640 $g_operator
1635168404Spjd	mkdev r${name}${unit}f	c $chr $(($unit * 16 + 5))	640 $g_operator
1636168404Spjd	mkdev r${name}${unit}g	c $chr $(($unit * 16 + 6))	640 $g_operator
1637185029Spjd	mkdev r${name}${unit}h	c $chr $(($unit * 16 + 7))	640 $g_operator
1638185029Spjd	mkdev r${name}${unit}i	c $chr $(($unit * 16 + 8))	640 $g_operator
1639185029Spjd	mkdev r${name}${unit}j	c $chr $(($unit * 16 + 9))	640 $g_operator
1640168404Spjd	mkdev r${name}${unit}k	c $chr $(($unit * 16 + 10))	640 $g_operator
1641168404Spjd	mkdev r${name}${unit}l	c $chr $(($unit * 16 + 11))	640 $g_operator
1642168404Spjd	mkdev r${name}${unit}m	c $chr $(($unit * 16 + 12))	640 $g_operator
1643168404Spjd	mkdev r${name}${unit}n	c $chr $(($unit * 16 + 13))	640 $g_operator
1644168404Spjd	mkdev r${name}${unit}o	c $chr $(($unit * 16 + 14))	640 $g_operator
1645168404Spjd	mkdev r${name}${unit}p	c $chr $(($unit * 16 + 15))	640 $g_operator
1646168404Spjd}
1647168404Spjd
1648168404Spjdmakedisk_p16high()
1649168404Spjd{
1650168404Spjd	ho=524280	# offset for partition 9 to 16
1651168404Spjd	name="$1"; unit="$2"; blk="$3"; chr="$4"
1652168404Spjd
1653168404Spjd	mkdev ${name}${unit}a	b $blk $(($unit * 8 + 0))	640 $g_operator
1654168404Spjd	mkdev ${name}${unit}b	b $blk $(($unit * 8 + 1))	640 $g_operator
1655168404Spjd	mkdev ${name}${unit}c	b $blk $(($unit * 8 + 2))	640 $g_operator
1656185029Spjd	mkdev ${name}${unit}d	b $blk $(($unit * 8 + 3))	640 $g_operator
1657185029Spjd	mkdev ${name}${unit}e	b $blk $(($unit * 8 + 4))	640 $g_operator
1658168404Spjd	mkdev ${name}${unit}f	b $blk $(($unit * 8 + 5))	640 $g_operator
1659168404Spjd	mkdev ${name}${unit}g	b $blk $(($unit * 8 + 6))	640 $g_operator
1660168404Spjd	mkdev ${name}${unit}h	b $blk $(($unit * 8 + 7))	640 $g_operator
1661168404Spjd	mkdev ${name}${unit}i	b $blk $(($unit * 8 + $ho + 8))	640 $g_operator
1662168404Spjd	mkdev ${name}${unit}j	b $blk $(($unit * 8 + $ho + 9))	640 $g_operator
1663200724Sdelphij	mkdev ${name}${unit}k	b $blk $(($unit * 8 + $ho + 10)) 640 $g_operator
1664168404Spjd	mkdev ${name}${unit}l	b $blk $(($unit * 8 + $ho + 11)) 640 $g_operator
1665168404Spjd	mkdev ${name}${unit}m	b $blk $(($unit * 8 + $ho + 12)) 640 $g_operator
1666168404Spjd	mkdev ${name}${unit}n	b $blk $(($unit * 8 + $ho + 13)) 640 $g_operator
1667168404Spjd	mkdev ${name}${unit}o	b $blk $(($unit * 8 + $ho + 14)) 640 $g_operator
1668168404Spjd	mkdev ${name}${unit}p	b $blk $(($unit * 8 + $ho + 15)) 640 $g_operator
1669168404Spjd	mkdev r${name}${unit}a	c $chr $(($unit * 8 + 0))	640 $g_operator
1670168404Spjd	mkdev r${name}${unit}b	c $chr $(($unit * 8 + 1))	640 $g_operator
1671185029Spjd	mkdev r${name}${unit}c	c $chr $(($unit * 8 + 2))	640 $g_operator
1672168404Spjd	mkdev r${name}${unit}d	c $chr $(($unit * 8 + 3))	640 $g_operator
1673168404Spjd	mkdev r${name}${unit}e	c $chr $(($unit * 8 + 4))	640 $g_operator
1674168404Spjd	mkdev r${name}${unit}f	c $chr $(($unit * 8 + 5))	640 $g_operator
1675168404Spjd	mkdev r${name}${unit}g	c $chr $(($unit * 8 + 6))	640 $g_operator
1676168404Spjd	mkdev r${name}${unit}h	c $chr $(($unit * 8 + 7))	640 $g_operator
1677168404Spjd	mkdev r${name}${unit}i	c $chr $(($unit * 8 + $ho + 8))	640 $g_operator
1678168404Spjd	mkdev r${name}${unit}j	c $chr $(($unit * 8 + $ho + 9))	640 $g_operator
1679168404Spjd	mkdev r${name}${unit}k	c $chr $(($unit * 8 + $ho + 10)) 640 $g_operator
1680168404Spjd	mkdev r${name}${unit}l	c $chr $(($unit * 8 + $ho + 11)) 640 $g_operator
1681168404Spjd	mkdev r${name}${unit}m	c $chr $(($unit * 8 + $ho + 12)) 640 $g_operator
1682168404Spjd	mkdev r${name}${unit}n	c $chr $(($unit * 8 + $ho + 13)) 640 $g_operator
1683174049Sjb	mkdev r${name}${unit}o	c $chr $(($unit * 8 + $ho + 14)) 640 $g_operator
1684168404Spjd	mkdev r${name}${unit}p	c $chr $(($unit * 8 + $ho + 15)) 640 $g_operator
1685168404Spjd}
1686168404Spjd
1687168404Spjd# make only the very few basic disk device nodes - 'a' partition
1688168404Spjd# and raw partition
1689168404Spjdmakedisk_minimal()
1690185029Spjd{
1691168404Spjd	name=$1; unit=$2; blk=$3; chr=$4
1692168404Spjd	doff=%DISKMINOROFFSET%
1693168404Spjd	ro=%RAWDISK_OFF%
1694168404Spjd	rn=%RAWDISK_NAME%
1695168404Spjd
1696168404Spjd	mkdev ${name}${unit}a	b $blk $(($unit * $doff + 0))	640 $g_operator
1697168404Spjd	mkdev ${name}${unit}$rn	b $blk $(($unit * $doff + $ro))	640 $g_operator
1698168404Spjd	mkdev r${name}${unit}a	c $chr $(($unit * $doff + 0))	640 $g_operator
1699168404Spjd	mkdev r${name}${unit}$rn c $chr $(($unit * $doff + $ro)) 640 $g_operator
1700168404Spjd}
1701168404Spjd
1702168404Spjdmakedev $*
1703168404Spjd