1#!/bin/sh - 2# 3# Copyright (c) 1991 The Regents of the University of California. 4# All rights reserved. 5# 6# %sccs.include.redist.sh% 7# 8# @(#)MAKEDEV 4.34 (Berkeley) 04/08/91 9# 10 11# Device "make" file. Valid arguments: 12# std standard devices 13# local configuration specific devices 14# Tapes: 15# ht* massbus tm03 & tu?? 16# tm* unibus tm11 & te10 emulations (e.g. Emulex tc-11) 17# tms* unibus/qbus TMSCP (e.g. TU81, TK50) 18# ts* unibus ts11 19# mt* massbus tu78 20# ut* unibus tu45 emulations (e.g.si 9700) 21# uu* tu58 cassettes on dl11 controller 22# Disks: 23# hp* massbus rm?? 24# hk* unibus rk06 and rk07 25# up* other unibus devices (e.g. on Emulex sc-21v controller) 26# ra* unibus uda50 w/ ra?? 27# kra* bi kdb50 w/ ra?? 28# rl* unibus rl02 29# rb* 730 idc w/ rb80 and/or rb02 30# rx* unibus rx211 floppy disk 31# Terminal multiplexors: 32# dz* unibus dz11 and dz32 33# dh* unibus dh11 and emulations (e.g. Able dmax, Emulex cs-11) 34# dmf* unibus dmf32 35# dhu* unibus dhu11 36# dmz* unibus dmz32 37# Pseudo terminals: 38# pty* set of 16 master and slave pseudo terminals 39# Printers: 40# ct* unibus parallel interface to CAT typesetter 41# lp* unibus lp11 parallel interface 42# va* unibus varian parallel interface 43# vp* unibus versatec parallel interface 44# Call units: 45# dn* unibus dn11 and emulations (e.g. Able Quadracall) 46# Special purpose devices: 47# ik* unibus interface to ikonas frame buffer 48# ps* unibus interface to e&s picture system 2 49# ad* unibus interface to data translation a/d converter 50# np* unibus ethernet co-processor interface, for downloading. 51# qv* qvss (microvax) display 52# ttyv0 qvss (microvax) display reserved pty 53PATH=/sbin:/bin:/usr/bin 54umask 77 55for i 56do 57case $i in 58 59std) 60 mknod console c 0 0 61 mknod drum c 7 0 ; chmod 640 drum ; chgrp kmem drum 62 mknod floppy c 8 0 63 mknod crl c 35 0 64 mknod csa1 c 51 0 65 mknod csa2 c 51 1 66 mknod tu0 b 8 0 67 mknod tu1 b 8 1 68 mknod kUmem c 3 3 ; chmod 600 kUmem 69 mknod kmem c 3 1 ; chmod 640 kmem ; chgrp kmem kmem 70 mknod mem c 3 0 ; chmod 640 mem ; chgrp kmem mem 71 mknod null c 3 2 ; chmod 666 null 72 mknod tty c 2 0 ; chmod 666 tty 73 mknod klog c 33 0 ; chmod 600 klog 74 mknod stdin c 53 0 ; chmod 666 stdin 75 mknod stdout c 53 1 ; chmod 666 stdout 76 mknod stderr c 53 2 ; chmod 666 stderr 77 mkdir fd > /dev/null 2>&1 78 (cd fd && eval `echo "" | awk ' BEGIN { \ 79 for (i = 0; i < 64; i++) \ 80 printf("mknod %d c 53 %d;", i, i)}'`) 81 chown -R bin.bin fd 82 chmod 555 fd 83 chmod 666 fd/* 84 ;; 85 86ht*|tm*|tms*|ts*|ut*) 87 umask 0 ; unit=`expr $i : '[^0-9]*\(.*\)'` 88 case $i in 89 ht*) blk=1; chr=5 ;; 90 tms*) blk=15; chr=38;; 91 tm*) blk=5; chr=14;; 92 ts*) blk=6; chr=16;; 93 ut*) blk=10; chr=17;; 94 esac 95 case $unit in 96 0|1|2|3|4|5|6|7) 97 four=`expr $unit + 4` ; eight=`expr $unit + 8` 98 twelve=`expr $unit + 12`; twenty=`expr $unit + 20` 99 mknod mt$unit b $blk $unit 100 mknod mt$four b $blk $four 101 mknod mt$eight b $blk $eight 102 mknod mt$twelve b $blk $twelve 103 mknod nmt$unit b $blk $four ;: sanity w/pdp11 v7 104 mknod nmt$eight b $blk $twelve ;: ditto 105 mknod nrmt$unit c $chr $four ;: sanity w/pdp11 v7 106 mknod nrmt$eight c $chr $twelve ;: ditto 107 mknod rmt$unit c $chr $unit 108 mknod rmt$four c $chr $four 109 mknod rmt$eight c $chr $eight 110 mknod rmt$twelve c $chr $twelve 111 if [ $i = ut ] 112 then 113 mknod mt$twenty b $blk $twenty 114 mknod rmt$twenty c $chr $twenty 115 fi 116 ;; 117 *) 118 echo bad unit for tape in: $1 119 ;; 120 esac 121 umask 77 122 ;; 123 124mt*) 125 umask 0 ; unit=`expr $i : '..\(.*\)'` 126 case $i in 127 mt*) blk=7; chr=19;; 128 esac 129 case $unit in 130 0|1|2|3|4|5|6|7) 131 eight=`expr $unit + 0`; 132 twelve=`expr $unit + 4`; 133 sixteen=`expr $unit + 8`; 134 twenty=`expr $unit + 12`; 135 mknod mt8 b $blk $eight 136 mknod mt12 b $blk $twelve 137 mknod mt16 b $blk $sixteen 138 mknod mt20 b $blk $twenty 139 mknod nmt8 b $blk $twelve ;: ditto 140 mknod nrmt8 c $chr $twelve ;: ditto 141 mknod rmt8 c $chr $eight 142 mknod rmt12 c $chr $twelve 143 mknod rmt16 c $chr $sixteen 144 mknod rmt20 c $chr $twenty 145 mknod nmt16 b $blk $twenty ;: ditto 146 mknod nrmt16 c $chr $twenty ;: ditto 147 ;; 148 *) 149 echo bad unit for tape in: $1 150 ;; 151 esac 152 umask 77 153 ;; 154 155hp*|hk*|up*|ra*|kra*|rl*|rb*) 156 umask 2 ; unit=`expr $i : '..\(.*\)'` 157 case $i in 158 hp*) name=hp; blk=0; chr=4;; 159 hk*) name=hk; blk=3; chr=11;; 160 up*) name=up; blk=2; chr=13;; 161 ra*) name=ra; blk=9; chr=9;; 162 kra*) name=kra; blk=16; chr=52;; 163 rb*) name=rb; blk=11; chr=23;; 164 rl*) name=rl; blk=14; chr=32;; 165 esac 166 case $unit in 167 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\ 168 17|18|19|20|21|22|23|24|25|26|27|28|29|30|31) 169 mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0` 170 mknod ${name}${unit}b b $blk `expr $unit '*' 8 + 1` 171 mknod ${name}${unit}c b $blk `expr $unit '*' 8 + 2` 172 mknod ${name}${unit}g b $blk `expr $unit '*' 8 + 6` 173 mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` 174 mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1` 175 mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` 176 mknod r${name}${unit}g c $chr `expr $unit '*' 8 + 6` 177 if [ $name != hk ] 178 then 179 mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3` 180 mknod ${name}${unit}e b $blk `expr $unit '*' 8 + 4` 181 mknod ${name}${unit}f b $blk `expr $unit '*' 8 + 5` 182 mknod ${name}${unit}h b $blk `expr $unit '*' 8 + 7` 183 mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` 184 mknod r${name}${unit}e c $chr `expr $unit '*' 8 + 4` 185 mknod r${name}${unit}f c $chr `expr $unit '*' 8 + 5` 186 mknod r${name}${unit}h c $chr `expr $unit '*' 8 + 7` 187 fi 188 chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h] 189 chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] 190 ;; 191 *) 192 echo bad unit for disk in: $i 193 ;; 194 esac 195 umask 77 196 ;; 197 198rx*) 199 unit=`expr $i : '..\(.*\)'` 200 name=rx; chr=30; blk=12; 201 case $unit in 202 0|1|2|3|4|5|6|7) 203 mknod ${name}${unit} b $blk `expr $unit '*' 8 + 0` 204 mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` 205 mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1` 206 mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` 207 mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` 208 ;; 209 *) 210 echo bad unit for floppy disk in: $i 211 ;; 212 esac 213 ;; 214 215uu*) 216 unit=`expr $i : '..\(.*\)'` 217 name=uu; blk=13; 218 case $unit in 219 0|1|2|3) 220 mknod ${name}${unit} b $blk `expr $unit '*' 2 + 0` 221 mknod ${name}${unit}a b $blk `expr $unit '*' 2 + 1` 222 ;; 223 *) 224 echo bad unit for uu cassette in: $i 225 ;; 226 esac 227 ;; 228 229dz*) 230 unit=`expr $i : 'dz\(.*\)'` 231 case $unit in 232 0|1|2|3|4|5|6|7) 233 eval `echo $unit | awk ' { u = $1 } END { 234 for (i = 0; i < 8; i++) 235 printf("mknod tty%02d c 1 %d; ",u*8+i,u*8+i); }'` 236 ;; 237 *) 238 echo bad unit for dz in: $i 239 ;; 240 esac 241 ;; 242 243dhu*|dh*|dmf*|dmz*) 244 case $i in 245 dmz*) name=dmz; major=37; count=24; 246 unit=`expr $i : "$name\(.*\)"` 247 case $unit in 248 0) ch=a ;; 1) ch=b ;; 2) ch=c ;; 3) ch=e ;; 249 4) ch=f ;; 5) ch=g ;; 250 *) echo bad unit for $name in: $i ;; 251 esac;; 252 dmf*) name=dmf; major=22; count=8; 253 unit=`expr $i : "$name\(.*\)"` 254 case $unit in 255 0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=E ;; 256 4) ch=F ;; 5) ch=G ;; 6) ch=H ;; 7) ch=I ;; 257 *) echo bad unit for $name in: $i ;; 258 esac;; 259 dhu*) name=dhu; major=34; count=16; 260 unit=`expr $i : "$name\(.*\)"`; 261 case $unit in 262 0) ch=S ;; 1) ch=T ;; 2) ch=U ;; 3) ch=V ;; 263 4) ch=W ;; 5) ch=X ;; 6) ch=Y ;; 7) ch=Z ;; 264 *) echo bad unit for $name in: $i ;; 265 esac;; 266 dh*) name=dh; major=12; count=16; 267 unit=`expr $i : "$name\(.*\)"` 268 case $unit in 269 0) ch=h ;; 1) ch=i ;; 2) ch=j ;; 3) ch=k ;; 270 4) ch=l ;; 5) ch=m ;; 6) ch=n ;; 7) ch=o ;; 271 *) echo bad unit for $name in: $i ;; 272 esac;; 273 esac 274 eval `echo $ch $unit $major $count | 275 awk ' { ch = $1; u = $4 * $2; m = $3; cnt = $4 } END { 276 for (i = 0; i < cnt; i++) 277 if (i < 10) 278 printf("mknod tty%s%x c %d %d; ",ch,i,m,u+i); 279 else 280 printf("mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'` 281 ;; 282 283lp*|va*|vp*) 284 case $i in 285 lp*) name=lp; major=15;; 286 va*) name=va; major=10;; 287 vp*) name=vp; major=6;; 288 esac 289 unit=`expr $i : "$name\(.*\)"` 290 case $unit in 291 0|1|2|3|4|5|6|7) 292 mknod $i c $major $unit; 293 chmod 666 $i 294 ;; 295 *) 296 echo bad unit for $name in: $i 297 ;; 298 esac 299 ;; 300 301pty*) 302 class=`expr $i : 'pty\(.*\)'` 303 case $class in 304 0) offset=0 name=p;; 305 1) offset=16 name=q;; 306 2) offset=32 name=r;; 307 3) offset=48 name=s;; 308 4) offset=64 name=t;; 309 5) offset=80 name=u;; 310 *) echo bad unit for pty in: $i;; 311 esac 312 case $class in 313 0|1|2|3|4|5) 314 umask 0 315 eval `echo $offset $name | awk ' { b=$1; n=$2 } END { 316 for (i = 0; i < 16; i++) 317 printf("mknod tty%s%x c 20 %d; \ 318 mknod pty%s%x c 21 %d; ", \ 319 n, i, b+i, n, i, b+i); }'` 320 umask 77 321 ;; 322 esac 323 ;; 324 325np*) 326 class=`expr $i : 'np\(.*\)'` 327 case $class in 328 0) offset=0 name=0;; 329 1) offset=16 name=1;; 330 2) offset=32 name=2;; 331 *) echo bad unit for np in: $i;; 332 esac 333 case $class in 334 0|1|2) 335 eval `echo $offset | awk ' { b=$1 } END { 336 for (i = 0; i < 4; i++) 337 printf("mknod np%02d c 39 %d;", \ 338 b+i, b+i); }'` 339 ;; 340 esac 341 ;; 342 343dn*|ik*|ps*|ad*|ct*) 344 unit=`expr $i : '..\(.*\)'` 345 case $i in 346 ct*) name=ct; chr=18;; 347 dn*) name=cu; chr=24;; 348 ps*) name=ps; chr=27;; 349 ad*) name=ad; chr=29;; 350 ik*) name=ik; chr=31;; 351 esac 352 case $unit in 353 0|1|2|3|4|5|6|7) 354 umask 0 355 mknod ${name}${unit} c ${chr} ${unit} 356 umask 77 357 ;; 358 *) 359 echo bad unit for ${name} in: $i 360 ;; 361 esac 362 ;; 363 364qv0) 365 mknod qv0 c 40 0 366 mknod qvcons c 40 1 367 mknod mouse c 40 2 368 ;; 369 370ttyv0) 371 if [ ! -f ttyqe ]; then sh ./MAKEDEV pty1; fi 372 mv ttyqf ttyv0 373 mv ptyqf ptyv0 374 ;; 375 376local) 377 sh MAKEDEV.local 378 ;; 379esac 380done 381