xref: /original-bsd/etc/etc.tahoe/MAKEDEV (revision 3e9e8393)
1#! /bin/sh
2#	@(#)MAKEDEV	5.6	06/14/88
3#
4# Device "make" file.  Valid arguments:
5#	std	standard devices
6#	local	configuration specific devices
7# Tapes:
8#	cy*	Cipher
9# Disks:
10#	dk*	VDDC or SMDE disk
11# Terminal multiplexors:
12#	vx*	VIOC
13#	mp*	MPCC
14# Pseudo terminals:
15#	pty*	set of 32 master and slave pseudo terminals
16# Printers:
17# Call units:
18# Special purpose devices:
19#	enp*	CMC Ethernet interface for loading RAM
20#	dr*	IKON DR-11W
21#	ik*	IKON DR-11W w/ E&S PS300
22#
23umask 77
24for i
25do
26case $i in
27
28std)
29	/etc/mknod CP		c 0 0
30	/etc/mknod console	c 0 1
31	/etc/mknod remote	c 0 2
32	/etc/mknod drum 	c 8 0	; chmod 640 drum ; chgrp kmem drum
33	/etc/mknod mem		c 3 0	; chmod 640 mem ; chgrp kmem mem
34	/etc/mknod kmem		c 3 1	; chmod 640 kmem ; chgrp kmem kmem
35	/etc/mknod null		c 3 2	; chmod 666 null
36	/etc/mknod vmem 	c 3 3	; chmod 640 vmem ; chgrp kmem vmem
37	/etc/mknod tty		c 2 0	; chmod 666 tty
38	/etc/mknod klog		c 15 0	; chmod 400 klog
39	;;
40
41cy*)
42	umask 0 ; unit=`expr $i : '..\(.*\)'`
43	case $i in
44	cy*) blk=3; chr=7 ;;
45	esac
46	case $unit in
47	0|1|2|3|4|5|6|7)
48		four=`expr $unit + 4`
49		eight=`expr $unit + 8`
50		twelve=`expr $unit + 12`
51#		twenty=`expr $unit + 20`
52		/etc/mknod mt$unit	b $blk $unit
53		/etc/mknod mt$four	b $blk $four
54		/etc/mknod mt$eight	b $blk $eight
55		/etc/mknod mt$twelve	b $blk $twelve
56		ln mt$four nmt$unit		;: sanity
57		ln mt$twelve nmt$eight		;: ditto
58		/etc/mknod rmt$unit	c $chr $unit
59		/etc/mknod rmt$four	c $chr $four
60		/etc/mknod rmt$eight	c $chr $eight
61		/etc/mknod rmt$twelve	c $chr $twelve
62		ln rmt$four nrmt$unit		;: sanity
63		ln rmt$twelve nrmt$eight	;: ditto
64#		if [ $i = ut ]
65#		then
66#			/etc/mknod mt$twenty	b $blk $twenty
67#			/etc/mknod rmt$twenty	c $chr $twenty
68#		fi
69		umask 77
70		;;
71	*)
72		echo bad unit for tape in: $1
73		;;
74	esac
75	;;
76
77dk*)
78	unit=`expr $i : '..\(.*\)'`
79	case $i in
80	dk*) name=dk; blk=1; chr=5;;
81	esac
82	case $unit in
83	0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)
84		case $unit in
85		a) u=10 ;;
86		b) u=11 ;;
87		c) u=12 ;;
88		d) u=13 ;;
89		e) u=14 ;;
90		f) u=15 ;;
91		*) u=$unit ;;
92		esac
93
94		/etc/mknod ${name}${unit}a	b $blk `expr $u '*' 8 + 0`
95		/etc/mknod ${name}${unit}b	b $blk `expr $u '*' 8 + 1`
96		/etc/mknod ${name}${unit}c	b $blk `expr $u '*' 8 + 2`
97		/etc/mknod ${name}${unit}d	b $blk `expr $u '*' 8 + 3`
98		/etc/mknod ${name}${unit}e	b $blk `expr $u '*' 8 + 4`
99		/etc/mknod ${name}${unit}f	b $blk `expr $u '*' 8 + 5`
100		/etc/mknod r${name}${unit}a	c $chr `expr $u '*' 8 + 0`
101		/etc/mknod r${name}${unit}b	c $chr `expr $u '*' 8 + 1`
102		/etc/mknod r${name}${unit}c	c $chr `expr $u '*' 8 + 2`
103		/etc/mknod r${name}${unit}d	c $chr `expr $u '*' 8 + 3`
104		/etc/mknod r${name}${unit}e	c $chr `expr $u '*' 8 + 4`
105		/etc/mknod r${name}${unit}f	c $chr `expr $u '*' 8 + 5`
106
107		chmod 640 ${name}${unit}[a-f]
108		chgrp operator ${name}${unit}[a-f]
109		chmod 640 r${name}${unit}[a-f]
110		chgrp operator r${name}${unit}[a-f]
111		;;
112	*)
113		echo bad unit for disk in: $i
114		;;
115	esac
116	;;
117
118vx*|mp*)
119	case $i in
120	vx*)	name=vx; major=1; count=16;
121		unit=`expr $i : "$name\(.*\)"`
122		case $unit in
123		0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f) ch=$unit ;;
124		*) echo bad unit for $name in: $i ;;
125		esac
126		;;
127	mp*)	name=mp; major=12; count=16;
128		unit=`expr $i : "$name\(.*\)"`
129		case $unit in
130		0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=D ;;
131		4) ch=E ;; 5) ch=F ;; 6) ch=G ;; 7) ch=H ;;
132		8) ch=I ;; 9) ch=J ;; a) ch=K ;; b) ch=L ;;
133		c) ch=M ;; d) ch=N ;; e) ch=O ;; f) ch=P ;;
134		*) echo bad unit for $name in: $i ;;
135		esac
136		;;
137	esac
138
139	case $unit in
140	a) un=10 ;; b) un=11 ;; c) un=12 ;; d) un=13 ;;
141	e) un=14 ;; f) un=15 ;; *) un=$unit ;;
142	esac
143
144	umask 044
145	eval `echo $ch $major $count $un |
146	  awk ' { ch = $1; u = $3 * $4; m = $2; cnt = $3; nd = $4 } END {
147	    if (m == 12)
148	        printf("/etc/mknod mpcc%d c 11 %d; /bin/chmod 0600 mpcc%d; ",nd,u,nd);
149	    for (i = 0; i < cnt; i++)
150	      if (i < 10)
151		printf("/etc/mknod tty%s%x c %d %d; ",ch,i,m,u+i);
152	      else
153		printf("/etc/mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'`
154	umask 77
155	;;
156
157pty*)
158	class=`expr $i : 'pty\(.*\)'`
159	case $class in
160	0) offset=0 name=p;;
161	1) offset=16 name=q;;
162	2) offset=32 name=r;;
163	3) offset=48 name=s;;
164	4) offset=64 name=s;;
165	5) offset=80 name=s;;
166	*) echo bad unit for pty in: $i;;
167	esac
168	case $class in
169	0|1|2|3|4|5)
170		umask 0
171		eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
172			for (i = 0; i < 16; i++)
173				printf("/etc/mknod tty%s%x c 9 %d; \
174					/etc/mknod pty%s%x c 10 %d; ", \
175					n, i, b+i, n, i, b+i); }'`
176		umask 77
177		;;
178	esac
179	;;
180
181enp*)
182	unit=`expr $i : 'enp\(.*\)'`
183	case $unit in
184	[0-6])
185		/etc/mknod enp${unit}ram c 16 $unit; chmod 644 enp${unit}ram
186		;;
187	*)
188		echo bad unit for enp in: $i
189		;;
190	esac
191	;;
192
193dr*)
194	unit=`expr $i : 'dr\(.*\)'`
195	case $unit in
196	[0-6])
197		/etc/mknod dr${unit} c 18 $unit; chmod 644 dr${unit}
198		;;
199	*)
200		echo bad unit for dr in: $i
201		;;
202	esac
203	;;
204
205ik*)
206	unit=`expr $i : 'ik\(.*\)'`
207	case $unit in
208	[0-9])
209		/etc/mknod ik${unit} c 20 $unit; chmod 644 ik${unit}
210		;;
211	*)
212		echo bad unit for ik in: $i
213		;;
214	esac
215	;;
216
217local)
218	sh MAKEDEV.local
219	;;
220esac
221done
222