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.35 (Berkeley) 10/07/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 zero c 3 12 ; chmod 666 zero 73 mknod tty c 2 0 ; chmod 666 tty 74 mknod klog c 33 0 ; chmod 600 klog 75 mknod stdin c 53 0 ; chmod 666 stdin 76 mknod stdout c 53 1 ; chmod 666 stdout 77 mknod stderr c 53 2 ; chmod 666 stderr 78 mkdir fd > /dev/null 2>&1 79 (cd fd && eval `echo "" | awk ' BEGIN { \ 80 for (i = 0; i < 64; i++) \ 81 printf("mknod %d c 53 %d;", i, i)}'`) 82 chown -R bin.bin fd 83 chmod 555 fd 84 chmod 666 fd/* 85 ;; 86 87ht*|tm*|tms*|ts*|ut*) 88 umask 0 ; unit=`expr $i : '[^0-9]*\(.*\)'` 89 case $i in 90 ht*) blk=1; chr=5 ;; 91 tms*) blk=15; chr=38;; 92 tm*) blk=5; chr=14;; 93 ts*) blk=6; chr=16;; 94 ut*) blk=10; chr=17;; 95 esac 96 case $unit in 97 0|1|2|3|4|5|6|7) 98 four=`expr $unit + 4` ; eight=`expr $unit + 8` 99 twelve=`expr $unit + 12`; twenty=`expr $unit + 20` 100 mknod mt$unit b $blk $unit 101 mknod mt$four b $blk $four 102 mknod mt$eight b $blk $eight 103 mknod mt$twelve b $blk $twelve 104 mknod nmt$unit b $blk $four ;: sanity w/pdp11 v7 105 mknod nmt$eight b $blk $twelve ;: ditto 106 mknod nrmt$unit c $chr $four ;: sanity w/pdp11 v7 107 mknod nrmt$eight c $chr $twelve ;: ditto 108 mknod rmt$unit c $chr $unit 109 mknod rmt$four c $chr $four 110 mknod rmt$eight c $chr $eight 111 mknod rmt$twelve c $chr $twelve 112 if [ $i = ut ] 113 then 114 mknod mt$twenty b $blk $twenty 115 mknod rmt$twenty c $chr $twenty 116 fi 117 ;; 118 *) 119 echo bad unit for tape in: $1 120 ;; 121 esac 122 umask 77 123 ;; 124 125mt*) 126 umask 0 ; unit=`expr $i : '..\(.*\)'` 127 case $i in 128 mt*) blk=7; chr=19;; 129 esac 130 case $unit in 131 0|1|2|3|4|5|6|7) 132 eight=`expr $unit + 0`; 133 twelve=`expr $unit + 4`; 134 sixteen=`expr $unit + 8`; 135 twenty=`expr $unit + 12`; 136 mknod mt8 b $blk $eight 137 mknod mt12 b $blk $twelve 138 mknod mt16 b $blk $sixteen 139 mknod mt20 b $blk $twenty 140 mknod nmt8 b $blk $twelve ;: ditto 141 mknod nrmt8 c $chr $twelve ;: ditto 142 mknod rmt8 c $chr $eight 143 mknod rmt12 c $chr $twelve 144 mknod rmt16 c $chr $sixteen 145 mknod rmt20 c $chr $twenty 146 mknod nmt16 b $blk $twenty ;: ditto 147 mknod nrmt16 c $chr $twenty ;: ditto 148 ;; 149 *) 150 echo bad unit for tape in: $1 151 ;; 152 esac 153 umask 77 154 ;; 155 156hp*|hk*|up*|ra*|kra*|rl*|rb*) 157 umask 2 ; unit=`expr $i : '..\(.*\)'` 158 case $i in 159 hp*) name=hp; blk=0; chr=4;; 160 hk*) name=hk; blk=3; chr=11;; 161 up*) name=up; blk=2; chr=13;; 162 ra*) name=ra; blk=9; chr=9;; 163 kra*) name=kra; blk=16; chr=52;; 164 rb*) name=rb; blk=11; chr=23;; 165 rl*) name=rl; blk=14; chr=32;; 166 esac 167 case $unit in 168 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\ 169 17|18|19|20|21|22|23|24|25|26|27|28|29|30|31) 170 mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0` 171 mknod ${name}${unit}b b $blk `expr $unit '*' 8 + 1` 172 mknod ${name}${unit}c b $blk `expr $unit '*' 8 + 2` 173 mknod ${name}${unit}g b $blk `expr $unit '*' 8 + 6` 174 mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` 175 mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1` 176 mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` 177 mknod r${name}${unit}g c $chr `expr $unit '*' 8 + 6` 178 if [ $name != hk ] 179 then 180 mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3` 181 mknod ${name}${unit}e b $blk `expr $unit '*' 8 + 4` 182 mknod ${name}${unit}f b $blk `expr $unit '*' 8 + 5` 183 mknod ${name}${unit}h b $blk `expr $unit '*' 8 + 7` 184 mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` 185 mknod r${name}${unit}e c $chr `expr $unit '*' 8 + 4` 186 mknod r${name}${unit}f c $chr `expr $unit '*' 8 + 5` 187 mknod r${name}${unit}h c $chr `expr $unit '*' 8 + 7` 188 fi 189 chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h] 190 chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] 191 ;; 192 *) 193 echo bad unit for disk in: $i 194 ;; 195 esac 196 umask 77 197 ;; 198 199rx*) 200 unit=`expr $i : '..\(.*\)'` 201 name=rx; chr=30; blk=12; 202 case $unit in 203 0|1|2|3|4|5|6|7) 204 mknod ${name}${unit} b $blk `expr $unit '*' 8 + 0` 205 mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` 206 mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1` 207 mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` 208 mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` 209 ;; 210 *) 211 echo bad unit for floppy disk in: $i 212 ;; 213 esac 214 ;; 215 216uu*) 217 unit=`expr $i : '..\(.*\)'` 218 name=uu; blk=13; 219 case $unit in 220 0|1|2|3) 221 mknod ${name}${unit} b $blk `expr $unit '*' 2 + 0` 222 mknod ${name}${unit}a b $blk `expr $unit '*' 2 + 1` 223 ;; 224 *) 225 echo bad unit for uu cassette in: $i 226 ;; 227 esac 228 ;; 229 230dz*) 231 unit=`expr $i : 'dz\(.*\)'` 232 case $unit in 233 0|1|2|3|4|5|6|7) 234 eval `echo $unit | awk ' { u = $1 } END { 235 for (i = 0; i < 8; i++) 236 printf("mknod tty%02d c 1 %d; ",u*8+i,u*8+i); }'` 237 ;; 238 *) 239 echo bad unit for dz in: $i 240 ;; 241 esac 242 ;; 243 244dhu*|dh*|dmf*|dmz*) 245 case $i in 246 dmz*) name=dmz; major=37; count=24; 247 unit=`expr $i : "$name\(.*\)"` 248 case $unit in 249 0) ch=a ;; 1) ch=b ;; 2) ch=c ;; 3) ch=e ;; 250 4) ch=f ;; 5) ch=g ;; 251 *) echo bad unit for $name in: $i ;; 252 esac;; 253 dmf*) name=dmf; major=22; count=8; 254 unit=`expr $i : "$name\(.*\)"` 255 case $unit in 256 0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=E ;; 257 4) ch=F ;; 5) ch=G ;; 6) ch=H ;; 7) ch=I ;; 258 *) echo bad unit for $name in: $i ;; 259 esac;; 260 dhu*) name=dhu; major=34; count=16; 261 unit=`expr $i : "$name\(.*\)"`; 262 case $unit in 263 0) ch=S ;; 1) ch=T ;; 2) ch=U ;; 3) ch=V ;; 264 4) ch=W ;; 5) ch=X ;; 6) ch=Y ;; 7) ch=Z ;; 265 *) echo bad unit for $name in: $i ;; 266 esac;; 267 dh*) name=dh; major=12; count=16; 268 unit=`expr $i : "$name\(.*\)"` 269 case $unit in 270 0) ch=h ;; 1) ch=i ;; 2) ch=j ;; 3) ch=k ;; 271 4) ch=l ;; 5) ch=m ;; 6) ch=n ;; 7) ch=o ;; 272 *) echo bad unit for $name in: $i ;; 273 esac;; 274 esac 275 eval `echo $ch $unit $major $count | 276 awk ' { ch = $1; u = $4 * $2; m = $3; cnt = $4 } END { 277 for (i = 0; i < cnt; i++) 278 if (i < 10) 279 printf("mknod tty%s%x c %d %d; ",ch,i,m,u+i); 280 else 281 printf("mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'` 282 ;; 283 284lp*|va*|vp*) 285 case $i in 286 lp*) name=lp; major=15;; 287 va*) name=va; major=10;; 288 vp*) name=vp; major=6;; 289 esac 290 unit=`expr $i : "$name\(.*\)"` 291 case $unit in 292 0|1|2|3|4|5|6|7) 293 mknod $i c $major $unit; 294 chmod 666 $i 295 ;; 296 *) 297 echo bad unit for $name in: $i 298 ;; 299 esac 300 ;; 301 302pty*) 303 class=`expr $i : 'pty\(.*\)'` 304 case $class in 305 0) offset=0 name=p;; 306 1) offset=16 name=q;; 307 2) offset=32 name=r;; 308 3) offset=48 name=s;; 309 4) offset=64 name=t;; 310 5) offset=80 name=u;; 311 *) echo bad unit for pty in: $i;; 312 esac 313 case $class in 314 0|1|2|3|4|5) 315 umask 0 316 eval `echo $offset $name | awk ' { b=$1; n=$2 } END { 317 for (i = 0; i < 16; i++) 318 printf("mknod tty%s%x c 20 %d; \ 319 mknod pty%s%x c 21 %d; ", \ 320 n, i, b+i, n, i, b+i); }'` 321 umask 77 322 ;; 323 esac 324 ;; 325 326np*) 327 class=`expr $i : 'np\(.*\)'` 328 case $class in 329 0) offset=0 name=0;; 330 1) offset=16 name=1;; 331 2) offset=32 name=2;; 332 *) echo bad unit for np in: $i;; 333 esac 334 case $class in 335 0|1|2) 336 eval `echo $offset | awk ' { b=$1 } END { 337 for (i = 0; i < 4; i++) 338 printf("mknod np%02d c 39 %d;", \ 339 b+i, b+i); }'` 340 ;; 341 esac 342 ;; 343 344dn*|ik*|ps*|ad*|ct*) 345 unit=`expr $i : '..\(.*\)'` 346 case $i in 347 ct*) name=ct; chr=18;; 348 dn*) name=cu; chr=24;; 349 ps*) name=ps; chr=27;; 350 ad*) name=ad; chr=29;; 351 ik*) name=ik; chr=31;; 352 esac 353 case $unit in 354 0|1|2|3|4|5|6|7) 355 umask 0 356 mknod ${name}${unit} c ${chr} ${unit} 357 umask 77 358 ;; 359 *) 360 echo bad unit for ${name} in: $i 361 ;; 362 esac 363 ;; 364 365qv0) 366 mknod qv0 c 40 0 367 mknod qvcons c 40 1 368 mknod mouse c 40 2 369 ;; 370 371ttyv0) 372 if [ ! -f ttyqe ]; then sh ./MAKEDEV pty1; fi 373 mv ttyqf ttyv0 374 mv ptyqf ptyv0 375 ;; 376 377local) 378 sh MAKEDEV.local 379 ;; 380esac 381done 382