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