1#!/bin/mksh 2# $MirSecuCron$ 3# $MirOS: src/etc/etc.sparc/MAKEDEV,v 1.22 2010/09/25 11:58:50 tg Exp $ 4# 5# THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. 6# generated from: 7# 8# OpenBSD: etc.sparc/MAKEDEV.md,v 1.28 2005/07/17 12:23:14 miod Exp 9# MirOS: src/etc/etc.sparc/MAKEDEV.md,v 1.7 2006/06/17 16:28:22 tg Exp 10# OpenBSD: MAKEDEV.common,v 1.19 2005/06/29 18:23:26 todd Exp 11# MirOS: src/etc/MAKEDEV.common,v 1.12 2010/09/25 11:58:05 tg Exp 12# OpenBSD: MAKEDEV.mi,v 1.73 2005/02/07 06:14:18 david Exp 13# MirOS: src/etc/MAKEDEV.mi,v 1.14 2009/07/18 14:08:59 tg Exp 14# OpenBSD: MAKEDEV.sub,v 1.14 2005/02/07 06:14:18 david Exp 15# MirOS: src/etc/MAKEDEV.sub,v 1.4 2005/07/24 12:49:10 tg Exp 16# 17# 18# Copyright (c) 2003-2009 Thorsten Glaser <tg@mirbsd.org> 19# Copyright (c) 2001-2004 Todd T. Fries <todd@OpenBSD.org> 20# 21# Permission to use, copy, modify, and distribute this software for any 22# purpose with or without fee is hereby granted, provided that the above 23# copyright notice and this permission notice appear in all copies. 24# 25# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 26# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 27# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 28# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 29# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 30# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 31# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 32# 33# Device "make" file. Valid arguments: 34# all makes all known devices, including local devices. 35# Tries to make the ``standard'' number of each type. 36# ramdisk Ramdisk kernel devices 37# std Standard devices 38# local Configuration specific devices 39# Disks: 40# ccd* Concatenated disk devices 41# cd* ATAPI and SCSI CD-ROM drives 42# fd* Floppy disk drives (3 1/2", 5 1/4") 43# presto* Prestoserve NVRAM memory 44# sd* SCSI disks, including flopticals 45# raid* RAIDframe disk devices 46# rd* "rd" pseudo-disks 47# vnd* "file" pseudo-disk devices 48# xd* Xylogic 753/7053 disks 49# xy* Xylogic 450/451 disks 50# Tapes: 51# ch* SCSI media changers 52# st* SCSI tape drives 53# Terminal ports: 54# cua[a-z]* Zilog 8530 serial ports 55# tty[a-z]* Zilog 8530 serial ports 56# magma* Magma multiport cards 57# spif* "spif" multiport cards 58# Pseudo terminals: 59# ptm pty master device 60# pty* Set of 62 master pseudo terminals 61# tty* Set of 62 slave pseudo terminals 62# Printers: 63# bpp* Parallel port 64# bppmag[mno] Magma parallel port 65# bpp[jkl] "spif" parallel port 66# Console ports: 67# ttyC0 Minimal wscons devices 68# ttyC-F* wscons display devices 69# wskbd* wscons keyboards 70# wsmux wscons keyboard/mouse mux devices 71# Pointing devices: 72# wsmouse* wscons mice 73# Special purpose devices: 74# audio* Audio devices 75# bpf* Berkeley Packet Filter 76# fd fd/* nodes for fdescfs 77# lkm Loadable kernel modules interface 78# openprom PROM settings 79# pf* Packet Filter 80# *random In-kernel random data source 81# ss* SCSI scanners 82# systrace* System call tracing device 83# tun* Network tunnel driver 84# uk* Unknown SCSI devices 85PATH=/sbin:/usr/sbin:/bin:/usr/bin 86T=$0 87 88# set this to echo for Echo-Only debugging 89[ "$eo" ] || eo= 90 91hex() 92{ 93 case $1 in 94 [0-9]) echo -n $1;; 95 10) echo -n a;; 96 11) echo -n b;; 97 12) echo -n c;; 98 13) echo -n d;; 99 14) echo -n e;; 100 15) echo -n f;; 101 esac 102} 103 104alph2d() 105{ 106 typeset t="$1" 107 typeset p="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 108 typeset sub=${p%${t}*} 109 echo ${#sub} 110} 111 112h2d() 113{ 114 typeset s="$1" 115 typeset f=${s%*[0-9a-f]} n=${s#[0-9a-f]*} 116 117 echo $(($(_h2d $f)*16+ $(_h2d $n) )) 118} 119 120_h2d() 121{ 122 case $1 in 123 [0-9]) echo -n $1;; 124 a) echo -n 10;; 125 b) echo -n 11;; 126 c) echo -n 12;; 127 d) echo -n 13;; 128 e) echo -n 14;; 129 f) echo -n 15;; 130 esac 131} 132 133unt() 134{ 135 # XXX pdksh can't seem to deal with locally scoped variables 136 # in ${foo#$bar} expansions 137 arg="$1" 138 tmp="${arg#[a-zA-Z]*}" 139 tmp="${tmp%*[a-zA-Z]}" 140 while [ "$tmp" != "$arg" ] 141 do 142 arg=$tmp 143 tmp="${arg#[a-zA-Z]*}" 144 tmp="${tmp%*[a-zA-Z]}" 145 done 146 echo $arg 147} 148 149dodisk() 150{ 151 [ "$DEBUG" ] && set -x 152 n=$(($((${5}*${7:-16}))+${6})) count=0 153 RMlist="$RMlist $1$2? r$1$2?" 154 [ 0$7 -ne 8 ] && l="i j k l m n o p" 155 for d in a b c d e f g h $l 156 do 157 M $1$2$d b $3 $(($n+$count)) 640 158 M r$1$2$d c $4 $(($n+$count)) 640 159 let count=count+1 160 done 161 MKlist="$MKlist;chown root:operator $1$2? r$1$2?" 162} 163 164dodisk2() 165{ 166 n=$(($(($5*${7:-16}))+$6)) 167 M $1$2a b $3 $n 640 operator 168 M r$1$2a c $4 $n 640 operator 169 n=$(($n+2)) 170 M $1$2c b $3 $n 640 operator 171 M r$1$2c c $4 $n 640 operator 172} 173 174# M name b/c major minor [mode] [group] 175RMlist="rm -f" 176MKlist=":" 177 178mkl() { 179 [ "${mklist[$1]}" ] && { 180 mklist[$1]="${mklist[$1]};mknod -m $1 $2 $3 $4 $5" 181 } || { 182 mklist[$1]="mknod -m $1 $2 $3 $4 $5" 183 modes="$modes $1" 184 } 185} 186 187M() { 188 RMlist="$RMlist $1" 189 mkl ${5-666} $1 $2 $3 $4 190 mklist="$mklist $1" 191 G=${6:-wheel} 192 [ "$7" ] && { 193 MKlist="$MKlist;chown $7:$G $1" 194 } || { 195 case $G in 196 wheel) g=0;; 197 kmem) g=2;; 198 tty) g=4;; 199 operator) g=5;; 200 _lkm) g=61;; 201 dialer) g=117;; 202 audio) g=250;; 203 esac 204 [ "${grplist[$g]}" ] && { 205 grplist[$g]="${grplist[$g]} $1" 206 } || { 207 groups="$groups $g" 208 grplist[$g]="chgrp $G $1" 209 } 210 } 211 return 0 212} 213 214R() { 215[ "$DEBUG" ] && set -x 216for i in "$@" 217do 218U=`unt $i` 219[ "$U" ] || U=0 220 221case $i in 222ramdisk) 223 R std random bpf0 224 R fd0 sd0 sd1 sd2 rd0 cd0 225 ;; 226 227std) 228 M console c 0 0 600 229 M tty c 2 0 230 M mem c 3 0 640 kmem 231 M kmem c 3 1 640 kmem 232 M null c 3 2 233 M zero c 3 12 234 M stdin c 24 0 235 M stdout c 24 1 236 M stderr c 24 2 237 M ksyms c 122 0 640 kmem 238 M drum c 7 0 640 kmem 239 M klog c 16 0 600 240 M eeprom c 3 11 640 kmem 241 M openprom c 70 0 640 kmem 242 ;; 243 244uk*) 245 M uk$U c 120 $U 640 operator 246 ;; 247 248tun*) 249 M tun$U c 111 $U 600 250 ;; 251 252systrace) 253 M systrace c 50 0 644 254 ;; 255 256ss*) 257 M ss$U c 121 $(($U*16)) 640 operator 258 M nss$U c 121 $(($(($U*16))+1)) 640 operator 259 M enss$U c 121 $(($(($U*16))+3)) 640 operator 260 RMlist="$RMlist scan$U" 261 MKlist="$MKlist;(umask 77;ln -s ss$U scan$U)" 262 ;; 263 264*random) 265 M random c 119 0 644 266 M srandom c 119 1 644 267 M urandom c 119 2 644 268 M prandom c 119 3 644 269 M wrandom c 119 3 666 270 M arandom c 119 4 644 271 ;; 272 273pf*) 274 M pf c 59 0 600 275 ;; 276 277openprom) 278 M openprom c 70 0 279 ;; 280 281lkm) 282 M lkm c 112 0 640 _lkm 283 ;; 284 285fd) 286 RMlist="mkdir -p fd;$RMlist" n=0 287 while [ $n -lt 64 ];do M fd/$n c 24 $n;n=$(($n+1));done 288 MKlist="$MKlist;chmod 555 fd" 289 ;; 290 291bpf*) 292 M bpf$U c 105 $U 600 293 ;; 294 295audio*) 296 M sound$U c 69 $U 660 audio 297 M mixer$U c 69 $(($U+16)) 660 audio 298 M audio$U c 69 $(($U+128)) 660 audio 299 M audioctl$U c 69 $(($U+192)) 660 audio 300 MKlist="$MKlist;[ -e audio ] || ln -s audio$U audio" 301 MKlist="$MKlist;[ -e mixer ] || ln -s mixer$U mixer" 302 MKlist="$MKlist;[ -e sound ] || ln -s sound$U sound" 303 MKlist="$MKlist;[ -e audioctl ] || ln -s audioctl$U audioctl" 304 ;; 305 306wsmouse[0-9]*) 307 M wsmouse$U c 80 $U 600 308 ;; 309 310wsmux|wsmouse|wskbd) 311 M wsmouse c 81 0 600 312 M wskbd c 81 1 600 313 ;; 314 315wskbd*) 316 M wskbd$U c 79 $U 600 317 ;; 318 319tty[C-F]*) 320 U=${i##tty[C-F]} 321 case $i in 322 ttyC*) n=C m=0;; 323 ttyD*) n=D m=256;; 324 ttyE*) n=E m=512;; 325 ttyF*) n=F m=768;; 326 esac 327 case $U in 328 [0-9a-f]) M tty$n$U c 78 $((16#$U+$m)) 600;; 329 cfg) M tty${n}cfg c 78 $((255+$m)) 600;; 330 *) echo bad unit $U for $i; exit 1;; 331 esac 332 ;; 333 334wscons) 335 R wsmouse0 wsmouse1 wsmouse2 wsmouse3 wskbd0 wskbd1 wskbd2 336 R wskbd3 wsmux ttyFcfg ttyF0 ttyF1 ttyF2 ttyF3 ttyF4 ttyF5 337 R ttyF6 ttyF7 ttyF8 ttyF9 ttyFa ttyFb ttyEcfg ttyE0 ttyE1 338 R ttyE2 ttyE3 ttyE4 ttyE5 ttyE6 ttyE7 ttyE8 ttyE9 ttyEa ttyEb 339 R ttyDcfg ttyD0 ttyD1 ttyD2 ttyD3 ttyD4 ttyD5 ttyD6 ttyD7 340 R ttyD8 ttyD9 ttyDa ttyDb ttyCcfg ttyC0 ttyC1 ttyC2 ttyC3 341 R ttyC4 ttyC5 ttyC6 ttyC7 ttyC8 ttyC9 ttyCa ttyCb 342 ;; 343 344bpp*) 345 M bpp$U c 104 $U 600 346 ;; 347 348pty*) 349 if [ $U -gt 15 ]; then 350 echo bad unit for pty in: $i 351 continue 352 fi 353 set -A letters p q r s t u v w x y z P Q R S T 354 set -A suffixes 0 1 2 3 4 5 6 7 8 9 \ 355 a b c d e f g h i j k l m n o p q r s t u v w x y z \ 356 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 357 358 name=${letters[$U]} 359 n=0 360 while [ $n -lt 62 ] 361 do 362 nam=$name${suffixes[$n]} 363 off=$(($U*62)) 364 M tty$nam c 20 $(($off+$n)) 365 M pty$nam c 21 $(($off+$n)) 366 n=$(($n+1)) 367 done 368 ;; 369 370ptm) 371 M ptm c 125 0 666 372 ;; 373 374spif*) 375 case $U in 376 0) offset=0 nam=j;; 377 1) offset=16 nam=k;; 378 2) offset=32 nam=l;; 379 *) echo "bad unit for $i: $U"; exit 127;; 380 esac 381 offset=$(($U*64)) 382 n=0 383 while [ $n -lt 8 ] 384 do 385 name=${nam}`hex $n` 386 M tty$name c 102 $(($offset+$n)) 660 dialer uucp 387 n=$(($n+1)) 388 done 389 M bpp${nam}0 c 103 $(($offset+0)) 600 390 ;; 391 392magma*) 393 case $U in 394 0) offset=0 nam=m;; 395 1) offset=16 nam=n;; 396 2) offset=32 nam=o;; 397 *) echo "bad unit for $i: $U"; exit 127;; 398 esac 399 offset=$(($U*64)) 400 n=0 401 while [ $n -lt 16 ] 402 do 403 name=${nam}`hex $n` 404 M tty$name c 100 $(($offset+$n)) 660 dialer uucp 405 n=$(($n+1)) 406 done 407 M bpp${nam}0 c 101 $(($offset+0)) 600 408 M bpp${nam}1 c 101 $(($offset+1)) 600 409 ;; 410 411tty[a-z]) 412 u=${i#tty*} 413 case $u in 414 a) n=0 ;; 415 b) n=1 ;; 416 c) n=2 ;; 417 d) n=3 ;; 418 e) n=4;; 419 f) n=5;; 420 *) echo unknown tty device $i ;; 421 esac 422 M tty$u c 12 $n 660 dialer uucp 423 ;; 424 425cua[a-z]) 426 u=${i#cua*} 427 case $u in 428 a) n=0 ;; 429 b) n=1 ;; 430 c) n=2 ;; 431 d) n=3 ;; 432 e) n=4;; 433 f) n=5;; 434 *) echo unknown cua device $i ;; 435 esac 436 M cua$u c 12 $(($n+128)) 660 dialer uucp 437 ;; 438 439st*) 440 n=$(($U*16)) 441 for pre in " " n e en 442 do 443 M ${pre}st$U b 11 $n 660 operator 444 M ${pre}rst$U c 18 $n 660 operator 445 n=$(($n+1)) 446 done 447 ;; 448 449ch*) 450 M ch$U c 19 $U 660 operator 451 ;; 452 453vnd*) 454 dodisk vnd $U 8 110 $U 0 455 dodisk svnd $U 8 110 $U 2048 456 ;; 457 458rd*) 459 dodisk2 rd $U 17 106 $U 0 460 ;; 461 462fd*) 463 typnam=$U${i#fd[01]*} 464 case $typnam in 465 0|1) typnum=0;; # no type specified, assume A 466 *A) typnum=0; typnam=0;; 467 *B) typnum=1;; 468 *C) typnum=2;; 469 *D) typnum=3;; 470 *E) typnum=4;; 471 *F) typnum=5;; 472 *G) typnum=6;; 473 *H) typnum=7;; 474 *) echo bad type $typnam for $i; exit 1;; 475 esac 476 case $U in 477 0|1) blk=16; chr=54;; 478 *) echo bad unit $U for $i; exit 1;; 479 esac 480 nam=fd${typnam} 481 n=$(($(($U*128))+$(($typnum*16)))) 482 M ${nam}a b $blk $n 640 operator 483 M ${nam}b b $blk $(($n+1)) 640 operator 484 M ${nam}c b $blk $(($n+2)) 640 operator 485 M r${nam}a c $chr $n 640 operator 486 M r${nam}b c $chr $(($n+1)) 640 operator 487 M r${nam}c c $chr $(($n+2)) 640 operator 488 ;; 489 490cd*) 491 dodisk2 cd $U 18 58 $U 0 492 ;; 493 494local) 495 test -s $T.local && sh $T.local 496 ;; 497 498all) 499 R presto0 bpp0 ccd0 ccd1 ccd2 ccd3 vnd0 vnd1 vnd2 vnd3 sd0 500 R sd1 sd2 sd3 sd4 cd0 cd1 rd0 xy0 xy1 xy2 xy3 tun0 tun1 tun2 501 R tun3 bpf0 bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9 pty0 502 R fd1 fd1B fd1C fd1D fd1E fd1F fd1G fd1H fd0 fd0B fd0C fd0D 503 R fd0E fd0F fd0G fd0H ss0 ss1 ch0 cuaa cuab cuac cuad ttya 504 R ttyb ttyc ttyd ptm local wscons audio0 uk0 random lkm pf 505 R systrace xd0 xd1 xd2 xd3 raid0 raid1 raid2 raid3 std st0 st1 506 R fd 507 ;; 508 509presto*|xd*|xy*|sd*|raid*|ccd*) 510 case $i in 511 presto*) dodisk presto $U 26 25 $U 0;; 512 xd*) dodisk xd $U 10 42 $U 0;; 513 xy*) dodisk xy $U 3 9 $U 0;; 514 sd*) dodisk sd $U 7 17 $U 0;; 515 raid*) dodisk raid $U 25 123 $U 0;; 516 ccd*) dodisk ccd $U 9 23 $U 0;; 517 esac 518 ;; 519 520*) 521 echo $i: unknown device 522 ;; 523esac 524done 525} 526R "$@" 527list="$RMlist" 528for mode in $modes; do 529 list="$list;${mklist[$mode]}" 530done 531for group in $groups; do 532 list="$list;${grplist[$group]}" 533done 534list="$list;$MKlist" 535if [ "$eo" = "echo" ]; then 536 $eo "$list" 537else 538 echo "$list" | sh 539fi 540