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