xref: /original-bsd/etc/etc.tahoe/MAKEDEV (revision 33b18212)
1#!/bin/sh -
2#
3# Copyright (c) 1988 Regents of the University of California.
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms are permitted
7# provided that the above copyright notice and this paragraph are
8# duplicated in all such forms and that any documentation,
9# advertising materials, and other materials related to such
10# distribution and use acknowledge that the software was developed
11# by the University of California, Berkeley.  The name of the
12# University may not be used to endorse or promote products derived
13# from this software without specific prior written permission.
14# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
15# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
16# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17#
18#	@(#)MAKEDEV	5.7 (Berkeley) 07/07/88
19#
20# Device "make" file.  Valid arguments:
21#	std	standard devices
22#	local	configuration specific devices
23# Tapes:
24#	cy*	Cipher
25# Disks:
26#	dk*	VDDC or SMDE disk
27# Terminal multiplexors:
28#	vx*	VIOC
29#	mp*	MPCC
30# Pseudo terminals:
31#	pty*	set of 32 master and slave pseudo terminals
32# Printers:
33# Call units:
34# Special purpose devices:
35#	enp*	CMC Ethernet interface for loading RAM
36#	dr*	IKON DR-11W
37#	ik*	IKON DR-11W w/ E&S PS300
38#
39umask 77
40for i
41do
42case $i in
43
44std)
45	/etc/mknod CP		c 0 0
46	/etc/mknod console	c 0 1
47	/etc/mknod remote	c 0 2
48	/etc/mknod drum 	c 8 0	; chmod 640 drum ; chgrp kmem drum
49	/etc/mknod mem		c 3 0	; chmod 640 mem ; chgrp kmem mem
50	/etc/mknod kmem		c 3 1	; chmod 640 kmem ; chgrp kmem kmem
51	/etc/mknod null		c 3 2	; chmod 666 null
52	/etc/mknod vmem 	c 3 3	; chmod 640 vmem ; chgrp kmem vmem
53	/etc/mknod tty		c 2 0	; chmod 666 tty
54	/etc/mknod klog		c 15 0	; chmod 400 klog
55	;;
56
57cy*)
58	umask 0 ; unit=`expr $i : '..\(.*\)'`
59	case $i in
60	cy*) blk=3; chr=7 ;;
61	esac
62	case $unit in
63	0|1|2|3|4|5|6|7)
64		four=`expr $unit + 4`
65		eight=`expr $unit + 8`
66		twelve=`expr $unit + 12`
67#		twenty=`expr $unit + 20`
68		/etc/mknod mt$unit	b $blk $unit
69		/etc/mknod mt$four	b $blk $four
70		/etc/mknod mt$eight	b $blk $eight
71		/etc/mknod mt$twelve	b $blk $twelve
72		ln mt$four nmt$unit		;: sanity
73		ln mt$twelve nmt$eight		;: ditto
74		/etc/mknod rmt$unit	c $chr $unit
75		/etc/mknod rmt$four	c $chr $four
76		/etc/mknod rmt$eight	c $chr $eight
77		/etc/mknod rmt$twelve	c $chr $twelve
78		ln rmt$four nrmt$unit		;: sanity
79		ln rmt$twelve nrmt$eight	;: ditto
80#		if [ $i = ut ]
81#		then
82#			/etc/mknod mt$twenty	b $blk $twenty
83#			/etc/mknod rmt$twenty	c $chr $twenty
84#		fi
85		umask 77
86		;;
87	*)
88		echo bad unit for tape in: $1
89		;;
90	esac
91	;;
92
93dk*)
94	unit=`expr $i : '..\(.*\)'`
95	case $i in
96	dk*) name=dk; blk=1; chr=5;;
97	esac
98	case $unit in
99	0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h)
100		case $unit in
101		a) u=10 ;;
102		b) u=11 ;;
103		c) u=12 ;;
104		d) u=13 ;;
105		e) u=14 ;;
106		f) u=15 ;;
107		g) u=16 ;;
108		h) u=17 ;;
109		*) u=$unit ;;
110		esac
111
112		/etc/mknod ${name}${unit}a	b $blk `expr $u '*' 8 + 0`
113		/etc/mknod ${name}${unit}b	b $blk `expr $u '*' 8 + 1`
114		/etc/mknod ${name}${unit}c	b $blk `expr $u '*' 8 + 2`
115		/etc/mknod ${name}${unit}d	b $blk `expr $u '*' 8 + 3`
116		/etc/mknod ${name}${unit}e	b $blk `expr $u '*' 8 + 4`
117		/etc/mknod ${name}${unit}f	b $blk `expr $u '*' 8 + 5`
118		/etc/mknod ${name}${unit}g	b $blk `expr $u '*' 8 + 6`
119		/etc/mknod ${name}${unit}h	b $blk `expr $u '*' 8 + 7`
120		/etc/mknod r${name}${unit}a	c $chr `expr $u '*' 8 + 0`
121		/etc/mknod r${name}${unit}b	c $chr `expr $u '*' 8 + 1`
122		/etc/mknod r${name}${unit}c	c $chr `expr $u '*' 8 + 2`
123		/etc/mknod r${name}${unit}d	c $chr `expr $u '*' 8 + 3`
124		/etc/mknod r${name}${unit}e	c $chr `expr $u '*' 8 + 4`
125		/etc/mknod r${name}${unit}f	c $chr `expr $u '*' 8 + 5`
126		/etc/mknod r${name}${unit}g	c $chr `expr $u '*' 8 + 6`
127		/etc/mknod r${name}${unit}h	c $chr `expr $u '*' 8 + 7`
128
129		chmod 640 ${name}${unit}[a-h]
130		chgrp operator ${name}${unit}[a-h]
131		chmod 640 r${name}${unit}[a-h]
132		chgrp operator r${name}${unit}[a-h]
133		;;
134	*)
135		echo bad unit for disk in: $i
136		;;
137	esac
138	;;
139
140vx*|mp*)
141	case $i in
142	vx*)	name=vx; major=1; count=16;
143		unit=`expr $i : "$name\(.*\)"`
144		case $unit in
145		0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f) ch=$unit ;;
146		*) echo bad unit for $name in: $i ;;
147		esac
148		;;
149	mp*)	name=mp; major=12; count=16;
150		unit=`expr $i : "$name\(.*\)"`
151		case $unit in
152		0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=D ;;
153		4) ch=E ;; 5) ch=F ;; 6) ch=G ;; 7) ch=H ;;
154		8) ch=I ;; 9) ch=J ;; a) ch=K ;; b) ch=L ;;
155		c) ch=M ;; d) ch=N ;; e) ch=O ;; f) ch=P ;;
156		*) echo bad unit for $name in: $i ;;
157		esac
158		;;
159	esac
160
161	case $unit in
162	a) un=10 ;; b) un=11 ;; c) un=12 ;; d) un=13 ;;
163	e) un=14 ;; f) un=15 ;; *) un=$unit ;;
164	esac
165
166	umask 044
167	eval `echo $ch $major $count $un |
168	  awk ' { ch = $1; u = $3 * $4; m = $2; cnt = $3; nd = $4 } END {
169	    if (m == 12)
170	        printf("/etc/mknod mpcc%d c 11 %d; /bin/chmod 0600 mpcc%d; ",nd,u,nd);
171	    for (i = 0; i < cnt; i++)
172	      if (i < 10)
173		printf("/etc/mknod tty%s%x c %d %d; ",ch,i,m,u+i);
174	      else
175		printf("/etc/mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'`
176	umask 77
177	;;
178
179pty*)
180	class=`expr $i : 'pty\(.*\)'`
181	case $class in
182	0) offset=0 name=p;;
183	1) offset=16 name=q;;
184	2) offset=32 name=r;;
185	3) offset=48 name=s;;
186	4) offset=64 name=s;;
187	5) offset=80 name=s;;
188	*) echo bad unit for pty in: $i;;
189	esac
190	case $class in
191	0|1|2|3|4|5)
192		umask 0
193		eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
194			for (i = 0; i < 16; i++)
195				printf("/etc/mknod tty%s%x c 9 %d; \
196					/etc/mknod pty%s%x c 10 %d; ", \
197					n, i, b+i, n, i, b+i); }'`
198		umask 77
199		;;
200	esac
201	;;
202
203enp*)
204	unit=`expr $i : 'enp\(.*\)'`
205	case $unit in
206	[0-6])
207		/etc/mknod enp${unit}ram c 16 $unit; chmod 644 enp${unit}ram
208		;;
209	*)
210		echo bad unit for enp in: $i
211		;;
212	esac
213	;;
214
215dr*)
216	unit=`expr $i : 'dr\(.*\)'`
217	case $unit in
218	[0-6])
219		/etc/mknod dr${unit} c 18 $unit; chmod 644 dr${unit}
220		;;
221	*)
222		echo bad unit for dr in: $i
223		;;
224	esac
225	;;
226
227ik*)
228	unit=`expr $i : 'ik\(.*\)'`
229	case $unit in
230	[0-9])
231		/etc/mknod ik${unit} c 20 $unit; chmod 644 ik${unit}
232		;;
233	*)
234		echo bad unit for ik in: $i
235		;;
236	esac
237	;;
238
239local)
240	sh MAKEDEV.local
241	;;
242esac
243done
244