xref: /openbsd/etc/etc.hppa/MAKEDEV (revision 133306f0)
1#!/bin/sh -
2#
3#	$OpenBSD: MAKEDEV,v 1.3 2000/03/22 08:08:53 niklas Exp $
4#	@(#)MAKEDEV	5.5 (Berkeley) 5/28/91
5#
6# Device "make" file.  Valid arguments:
7#	std	standard devices
8#	local	configuration specific devices
9# Tapes:
10#	st*	SCSI tape
11# Disks:
12#	fd*	floppy disks
13#	sd*	SCSI disks
14#	cd*	CDROM drives
15#	ccd*	"concatenated" pseudo-disks
16#	vnd*	"file" pseudo-disks
17#	rd*	RAM disks
18# Terminal multiplexors:
19#	tty0*	RS-232 single-port serial interface
20# Pseudo terminals:
21#	pty*	set of 16 master and slave pseudo terminals
22# Printers:
23#	lpt*	IEEE 1284 cetronics iface
24# Call units:
25# Special purpose devices:
26#	ch*	SCSI media changer
27#	fd	file descriptors
28#	hil	HIL input devices
29#	bpf*	packet filter
30#	tun*	network tunnel driver
31#	lkm	loadable kernel modules interface
32#	*random	inkernel random number generator
33#	xfs*	XFS filesystem devices
34#
35
36PATH=/sbin:/bin/:/usr/bin:/usr/sbin
37umask 77
38
39#
40# Utility functions
41#
42
43hex ()
44{
45	case $1 in
46		[0-9]) echo -n $1 ;;
47		10) echo -n a;;
48		11) echo -n b;;
49		12) echo -n c;;
50		13) echo -n d;;
51		14) echo -n e;;
52		15) echo -n f;;
53	esac
54}
55
56dodisk ()
57{
58	rm -f ${1}${2}? r${1}${2}?
59	mknod ${1}${2}a  b $3 $(($5 * 16 + $6 + 0))
60	mknod ${1}${2}b  b $3 $(($5 * 16 + $6 + 1))
61	mknod ${1}${2}c  b $3 $(($5 * 16 + $6 + 2))
62	mknod ${1}${2}d  b $3 $(($5 * 16 + $6 + 3))
63	mknod ${1}${2}e  b $3 $(($5 * 16 + $6 + 4))
64	mknod ${1}${2}f  b $3 $(($5 * 16 + $6 + 5))
65	mknod ${1}${2}g  b $3 $(($5 * 16 + $6 + 6))
66	mknod ${1}${2}h  b $3 $(($5 * 16 + $6 + 7))
67	mknod ${1}${2}i  b $3 $(($5 * 16 + $6 + 8))
68	mknod ${1}${2}j  b $3 $(($5 * 16 + $6 + 9))
69	mknod ${1}${2}k  b $3 $(($5 * 16 + $6 + 10))
70	mknod ${1}${2}l  b $3 $(($5 * 16 + $6 + 11))
71	mknod ${1}${2}m  b $3 $(($5 * 16 + $6 + 12))
72	mknod ${1}${2}n  b $3 $(($5 * 16 + $6 + 13))
73	mknod ${1}${2}o  b $3 $(($5 * 16 + $6 + 14))
74	mknod ${1}${2}p  b $3 $(($5 * 16 + $6 + 15))
75	mknod r${1}${2}a c $4 $(($5 * 16 + $6 + 0))
76	mknod r${1}${2}b c $4 $(($5 * 16 + $6 + 1))
77	mknod r${1}${2}c c $4 $(($5 * 16 + $6 + 2))
78	mknod r${1}${2}d c $4 $(($5 * 16 + $6 + 3))
79	mknod r${1}${2}e c $4 $(($5 * 16 + $6 + 4))
80	mknod r${1}${2}f c $4 $(($5 * 16 + $6 + 5))
81	mknod r${1}${2}g c $4 $(($5 * 16 + $6 + 6))
82	mknod r${1}${2}h c $4 $(($5 * 16 + $6 + 7))
83	mknod r${1}${2}i c $4 $(($5 * 16 + $6 + 8))
84	mknod r${1}${2}j c $4 $(($5 * 16 + $6 + 9))
85	mknod r${1}${2}k c $4 $(($5 * 16 + $6 + 10))
86	mknod r${1}${2}l c $4 $(($5 * 16 + $6 + 11))
87	mknod r${1}${2}m c $4 $(($5 * 16 + $6 + 12))
88	mknod r${1}${2}n c $4 $(($5 * 16 + $6 + 13))
89	mknod r${1}${2}o c $4 $(($5 * 16 + $6 + 14))
90	mknod r${1}${2}p c $4 $(($5 * 16 + $6 + 15))
91	chown root.operator ${1}${2}[a-p] r${1}${2}[a-p]
92	chmod 640 ${1}${2}[a-p] r${1}${2}[a-p]
93}
94
95#
96# End of utility functions
97#
98
99for i
100do
101case $i in
102
103all)
104	sh MAKEDEV std fd st0 st1 ccd0 ccd1 ccd2
105	sh MAKEDEV sd0 sd1 sd2 rd0 rd1 pty0 vnd0 vnd1 vnd2 vnd3
106	sh MAKEDEV hil com0 com1 com2 com3
107	sh MAKEDEV bpf0 bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9
108	sh MAKEDEV ipl tun0 tun1 tun2 tun3 lkm random xfs0
109	sh MAKEDEV local
110	;;
111
112raminst)
113	sh MAKEDEV std fd st0 st1 sd0 sd1 sd2 sd3 rd0 rd1
114	sh MAKEDEV pty0 hil com0 com1
115	sh MAKEDEV bpf0 bpf1 tun0 tun1 lkm random
116	;;
117
118std)
119	rm -f console drum kmem mem null zero tty klog stdin stdout stderr ksyms
120	mknod console	c 0 0
121	mknod tty	c 1 0	; chmod 666 tty
122	mknod mem	c 2 0	; chmod 640 mem ; chown root.kmem mem
123	mknod kmem	c 2 1	; chmod 640 kmem ; chown root.kmem kmem
124	mknod null	c 2 2	; chmod 666 null
125	mknod zero	c 2 12	; chmod 666 zero
126	mknod drum	c 3 0	; chmod 640 drum ; chown root.kmem drum
127	mknod klog	c 6 0	; chmod 600 klog
128	mknod stdin	c 16 0	; chmod 666 stdin
129	mknod stdout	c 16 1	; chmod 666 stdout
130	mknod stderr	c 16 2	; chmod 666 stderr
131	mknod ksyms	c 29 0  ; chmod 640 ksyms ; chown root.kmem ksyms
132	;;
133
134fd)
135	rm -f fd/*
136	mkdir fd > /dev/null 2>&1
137	n=0
138	(cd fd && while [ $n -lt 64 ]; do mknod $n c 24 $n; n="$(( $n + 1 ))"; done )
139	chown -R root.wheel fd
140	chmod 555 fd
141	chmod 666 fd/*
142	;;
143
144st*)
145	umask 2 ; unit=${i##*[a-z]}
146	case $i in
147	st*) name=st;  chr=11; blk=5;;
148	esac
149	rm -f $name$unit n$name$unit e$name$unit en$name$unit \
150		r$name$unit nr$name$unit er$name$unit enr$name$unit
151	mknod $name$unit	b $blk $(($unit * 16 + 0))
152	mknod n$name$uni	b $blk $(($unit * 16 + 1))
153	mknod e$name$uni	b $blk $(($unit * 16 + 2))
154	mknod en$name$unit	b $blk $(($unit * 16 + 3))
155	mknod r$name$unit	c $chr $(($unit * 16 + 0))
156	mknod nr$name$unit	c $chr $(($unit * 16 + 1))
157	mknod er$name$unit	c $chr $(($unit * 16 + 2))
158	mknod enr$name$unit	c $chr $(($unit * 16 + 3))
159	chown root.operator $name$unit n$name$unit e$name$unit en$name$unit \
160		r$name$unit nr$name$unit er$name$unit enr$name$unit
161	chmod 660 $name$unit n$name$unit e$name$unit en$name$unit \
162		r$name$unit nr$name$unit er$name$unit enr$name$unit
163	umask 77
164	;;
165
166ch*)
167	umask 2
168	name=ch; chr=13
169	rm -f $name$unit
170	mknod ${name}${unit}	c $chr $unit
171	chown root.operator ${name}${unit}
172	chmod 660 ${name}${unit}
173	umask 77
174	;;
175
176bpf*)
177	unit=${i##*[a-z]}
178	rm -f bpf$unit
179	mknod bpf$unit c 17 $unit
180	chmod 600 bpf$unit
181	chown root.wheel bpf$unit
182	;;
183
184ipl)
185	rm -f ipl ipnat ipstate ipauth
186	mknod ipl c 21 0
187	mknod ipnat c 21 1
188	mknod ipstate c 21 2
189	mknod ipauth c 21 3
190	chown root.wheel ipl ipnat ipstate ipauth
191	;;
192
193tun*)
194	unit=${i##*[a-z]}
195	rm -f tun$unit
196	mknod tun$unit c 18 $unit
197	chmod 600 tun$unit
198	chown root.wheel tun$unit
199	;;
200
201rd*|cd*)
202	umask 2 ; unit=${i##*[a-z]}
203	case $i in
204	rd*) name=cd; blk=3; chr=9;;
205	cd*) name=cd; blk=6; chr=12;;
206	esac
207	rm -f $name$unit? r$name$unit?
208	mknod ${name}${unit}a  b $blk $(($unit * 16 + 0))
209	mknod ${name}${unit}c  b $blk $(($unit * 16 + 2))
210	mknod r${name}${unit}a c $chr $(($unit * 16 + 0))
211	mknod r${name}${unit}c c $chr $(($unit * 16 + 2))
212	chown root.operator ${name}${unit}[a-h] r${name}${unit}[a-h]
213	chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
214	umask 77
215	;;
216
217ccd*|sd*)
218	umask 2 ; unit=${i##*[a-z]}
219	case $i in
220	sd*) name=sd; blk=4; chr=10;;
221	ccd*) name=ccd; blk=1; chr=7;;
222	esac
223	case $unit in
224	0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\
225	17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)
226		dodisk $name $unit $blk $chr $unit 0
227		;;
228	*)
229		echo bad unit for disk in: $i
230		;;
231	esac
232	umask 77
233	;;
234
235vnd*)
236	umask 2 ; unit=${i##*[a-z]}
237	blk=2; chr=8;
238	dodisk  vnd $unit $blk $chr $unit 0
239	dodisk svnd $unit $blk $chr $unit 128
240	umask 77
241	;;
242
243tty0*)
244	unit=${i##tty0}
245	case $unit in
246	0|1|2|3)
247		rm -f tty${unit} cua${unit}
248		mknod tty${unit} c 23 ${unit}
249		mknod cua${unit} c 23 $((${unit} + 128))
250		;;
251	*)
252		echo bad unit for tty in: $i
253		;;
254	esac
255	;;
256
257lpt*)
258	unit=${i##*[a-z]}
259	case $unit in
260	0|1|2|3)
261		rm -f lpt${unit}
262		mknod lpt${unit} c 30 ${unit}
263		;;
264	*)
265		echo bad unit for lpt in: $i
266		;;
267	esac
268	;;
269
270lkm)
271	rm -f lkm
272	mknod lkm c 19 0
273	chown root.kmem lkm
274	chmod 640 lkm
275	;;
276
277pty*)
278	class=${i##*[a-z]}
279	case $class in
280	0) offset=0 name=p;;
281	1) offset=16 name=q;;
282	2) offset=32 name=r;;
283	3) offset=48 name=s;;
284	4) offset=64 name=t;;
285	5) offset=80 name=u;;
286	6) offset=96 name=v;;
287	7) offset=112 name=w;;
288	8) offset=128 name=x;;
289	9) offset=144 name=y;;
290	10) offset=160 name=z;;
291	11) offset=176 name=P;;
292	12) offset=192 name=Q;;
293	13) offset=208 name=R;;
294	14) offset=224 name=S;;
295	15) offset=240 name=T;;
296	*) echo bad unit for pty in: $i;;
297	esac
298	case $class in
299	0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15)
300		umask 0
301		n=0
302		while [ $n -lt 16 ]
303		do
304			nam=$name`hex $n`
305			rm -f {tty,pty}$nam
306			mknod tty$nam c 4 "$(( $offset + $n ))"
307			mknod pty$nam c 5 "$(( $offset + $n ))"
308			n="$(( $n + 1 ))"
309		done
310		umask 77
311		;;
312	esac
313	;;
314
315random|srandom|urandom|prandom|arandom)
316        rm -f random urandom srandom prandom arandom
317	mknod  random c 20 0
318	mknod srandom c 20 1
319	mknod urandom c 20 2
320	mknod prandom c 20 3
321	mknod arandom c 20 4
322	chown root.wheel random srandom urandom prandom arandom
323	chmod 644 random srandom urandom prandom arandom
324	;;
325
326xfs*)
327	rm -f xfs$unit
328	mknod xfs$unit c 31 $unit
329	chmod 600 xfs$unit
330	chown root.wheel xfs$unit
331	;;
332
333local)
334	umask 0
335	test -s MAKEDEV.local && sh MAKEDEV.local
336	;;
337*)
338	echo $i: unknown device
339	;;
340esac
341done
342