1#!/bin/mksh 2# $MirSecuCron$ 3# $MirOS: src/etc/etc.i386/MAKEDEV,v 1.23 2010/09/25 11:58:49 tg Exp $ 4# 5# THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. 6# generated from: 7# 8# OpenBSD: etc.i386/MAKEDEV.md,v 1.32 2005/06/29 18:23:27 todd Exp 9# MirOS: src/etc/etc.i386/MAKEDEV.md,v 1.15 2009/02/22 16:29:08 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# rambig additional devices to be put on large ramdisk media 38# std Standard devices 39# local Configuration specific devices 40# Disks: 41# ccd* Concatenated disk devices 42# cd* ATAPI and SCSI CD-ROM drives 43# fd* Floppy disk drives (3 1/2", 5 1/4") 44# mcd* Mitsumi CD-ROM drives 45# raid* RAIDframe disk devices 46# rd* "rd" pseudo-disks 47# sd* SCSI disks, including flopticals 48# vnd* "file" pseudo-disk devices 49# wd* "winchester" disk drives (ST506, IDE, ESDI, RLL, ...) 50# Tapes: 51# ch* SCSI media changers 52# st* SCSI tape drives 53# wt* Archive/Wangtek QIC-cartridge tape drives 54# Terminal ports: 55# tty[0-7][0-9a-f] NS16x50 serial ports 56# ttyc* Cyclades serial ports 57# Pseudo terminals: 58# ptm pty master device 59# pty* Set of 62 master pseudo terminals 60# tty* Set of 62 slave pseudo terminals 61# Console ports: 62# ttyC0 Minimal wscons devices 63# ttyC-F* wscons display devices 64# wskbd* wscons keyboards 65# wsmux wscons keyboard/mouse mux devices 66# Pointing devices: 67# wsmouse* wscons mice 68# Printers: 69# lpa* Polled printer port 70# lpt* IEEE 1284 centronics printer 71# USB devices: 72# uall All USB devices 73# ttyU* USB serial ports 74# ugen* Generic USB devices 75# uhid* Generic HID devices 76# ulpt* Printer devices 77# urio* Diamond Multimedia Rio 500 78# usb* Bus control devices used by usbd for attach/detach 79# uscanner* Scanners 80# Special purpose devices: 81# apm Power management device 82# audio* Audio devices 83# bio ioctl tunnel pseudo-device 84# bktr* Video frame grabbers 85# bpf* Berkeley Packet Filter 86# crypto Hardware crypto access driver 87# fd fd/* nodes for fdescfs 88# gpr* GPR400 smartcard reader 89# iop* I2O controller devices 90# joy* Joystick driver 91# lkm Loadable kernel modules interface 92# music* MIDI devices 93# pci PCI bus device 94# pctr* PC Performance Tuning Register access device 95# pf* Packet Filter 96# radio* FM tuner devices 97# rmidi* Raw MIDI devices 98# *random In-kernel random data source 99# speaker PC speaker 100# ss* SCSI scanners 101# systrace* System call tracing device 102# tun* Network tunnel driver 103# tuner* Tuner devices 104# uk* Unknown SCSI devices 105# wdt0 Watchdog timer 106# I4B devices: 107# isdn ISDN4BSD master device 108# isdnctl ISDN4BSD control device 109# isdnbchan* ISDN4BSD raw B channel device 110# isdntrc* ISDN4BSD tracing device 111# isdntel* ISDN4BSD telephony device 112PATH=/sbin:/usr/sbin:/bin:/usr/bin 113T=$0 114 115# set this to echo for Echo-Only debugging 116[ "$eo" ] || eo= 117 118hex() 119{ 120 case $1 in 121 [0-9]) echo -n $1;; 122 10) echo -n a;; 123 11) echo -n b;; 124 12) echo -n c;; 125 13) echo -n d;; 126 14) echo -n e;; 127 15) echo -n f;; 128 esac 129} 130 131alph2d() 132{ 133 typeset t="$1" 134 typeset p="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 135 typeset sub=${p%${t}*} 136 echo ${#sub} 137} 138 139h2d() 140{ 141 typeset s="$1" 142 typeset f=${s%*[0-9a-f]} n=${s#[0-9a-f]*} 143 144 echo $(($(_h2d $f)*16+ $(_h2d $n) )) 145} 146 147_h2d() 148{ 149 case $1 in 150 [0-9]) echo -n $1;; 151 a) echo -n 10;; 152 b) echo -n 11;; 153 c) echo -n 12;; 154 d) echo -n 13;; 155 e) echo -n 14;; 156 f) echo -n 15;; 157 esac 158} 159 160unt() 161{ 162 # XXX pdksh can't seem to deal with locally scoped variables 163 # in ${foo#$bar} expansions 164 arg="$1" 165 tmp="${arg#[a-zA-Z]*}" 166 tmp="${tmp%*[a-zA-Z]}" 167 while [ "$tmp" != "$arg" ] 168 do 169 arg=$tmp 170 tmp="${arg#[a-zA-Z]*}" 171 tmp="${tmp%*[a-zA-Z]}" 172 done 173 echo $arg 174} 175 176dodisk() 177{ 178 [ "$DEBUG" ] && set -x 179 n=$(($((${5}*${7:-16}))+${6})) count=0 180 RMlist="$RMlist $1$2? r$1$2?" 181 [ 0$7 -ne 8 ] && l="i j k l m n o p" 182 for d in a b c d e f g h $l 183 do 184 M $1$2$d b $3 $(($n+$count)) 640 185 M r$1$2$d c $4 $(($n+$count)) 640 186 let count=count+1 187 done 188 MKlist="$MKlist;chown root:operator $1$2? r$1$2?" 189} 190 191dodisk2() 192{ 193 n=$(($(($5*${7:-16}))+$6)) 194 M $1$2a b $3 $n 640 operator 195 M r$1$2a c $4 $n 640 operator 196 n=$(($n+2)) 197 M $1$2c b $3 $n 640 operator 198 M r$1$2c c $4 $n 640 operator 199} 200 201# M name b/c major minor [mode] [group] 202RMlist="rm -f" 203MKlist=":" 204 205mkl() { 206 [ "${mklist[$1]}" ] && { 207 mklist[$1]="${mklist[$1]};mknod -m $1 $2 $3 $4 $5" 208 } || { 209 mklist[$1]="mknod -m $1 $2 $3 $4 $5" 210 modes="$modes $1" 211 } 212} 213 214M() { 215 RMlist="$RMlist $1" 216 mkl ${5-666} $1 $2 $3 $4 217 mklist="$mklist $1" 218 G=${6:-wheel} 219 [ "$7" ] && { 220 MKlist="$MKlist;chown $7:$G $1" 221 } || { 222 case $G in 223 wheel) g=0;; 224 kmem) g=2;; 225 tty) g=4;; 226 operator) g=5;; 227 _lkm) g=61;; 228 dialer) g=117;; 229 audio) g=250;; 230 esac 231 [ "${grplist[$g]}" ] && { 232 grplist[$g]="${grplist[$g]} $1" 233 } || { 234 groups="$groups $g" 235 grplist[$g]="chgrp $G $1" 236 } 237 } 238 return 0 239} 240 241R() { 242[ "$DEBUG" ] && set -x 243for i in "$@" 244do 245U=`unt $i` 246[ "$U" ] || U=0 247 248case $i in 249ramdisk) 250 R std bpf0 fd0 wd0 sd0 tty00 tty01 rd0 251 R st0 cd0 ttyC0 random wskbd0 wskbd1 wskbd2 apm vnd0 252 ;; 253rambig) 254 R bpf1 pty0 raid0 raid1 tun0 vnd1 crypto 255 ;; 256 257std) 258 M console c 0 0 600 259 M tty c 1 0 260 M mem c 2 0 640 kmem 261 M kmem c 2 1 640 kmem 262 M null c 2 2 263 M zero c 2 12 264 M stdin c 22 0 265 M stdout c 22 1 266 M stderr c 22 2 267 M ksyms c 50 0 640 kmem 268 M drum c 4 0 640 kmem 269 M klog c 7 0 600 270 M xf86 c 2 4 600 271 ;; 272 273ttyc*) 274 M ttyc$U c 38 $U 660 dialer uucp 275 M cuac$U c 38 $(($U+128)) 660 dialer uucp 276 ;; 277 278isdns) 279 R isdn isdnctl isdnbchan0 isdnbchan1 280 R isdntel0 isdntel1 isdntrc0 isdntrc1 281 cat <<_EOF_ALLISDN 282The author of the ISDN4BSD package is: 283 * Hellmuth Michaelis 284 * Hallstrasse 20 285 * D-25462 Rellingen 286 * voice: +49 4101 473574 287 * fax: +49 4101 473575 288 * email: hm@kts.org 289 290He requests a picture postcard of the home town of any ISDN4BSD 291user as licence fee. Please send him one if you are using this 292ISDN subsystem for MirOS BSD, too. 293 294 * It may be illegal in your country to connect an ISDN4BSD-based machine 295 * using a passive ISDN card to the ISDN at your site because the protocol 296 * stack of ISDN4BSD, which is necessary to run passive cards, has not been 297 * approved by the telecommunication certification authority of your country. 298 * If in doubt, please contact your local ISDN provider! 299 300_EOF_ALLISDN 301 ;; 302 303isdntel*) 304 M isdntel$U c 60 $U 305 ;; 306 307isdntrc*) 308 M isdntrc$U c 59 $U 309 ;; 310 311isdnbchan*) 312 M isdnbchan$U c 58 $U 313 ;; 314 315isdnctl) 316 M isdnctl c 57 0 317 ;; 318 319isdn) 320 M isdn c 56 0 321 ;; 322 323wdt0) 324 M wdt$U c 55 $U 440 operator 325 ;; 326 327uk*) 328 M uk$U c 20 $U 640 operator 329 ;; 330 331tuner*) 332 M tuner$U c 49 $(($(($U*2))+16)) 644 333 ;; 334 335tun*) 336 M tun$U c 40 $U 600 337 ;; 338 339systrace) 340 M systrace c 78 0 644 341 ;; 342 343ss*) 344 M ss$U c 19 $(($U*16)) 640 operator 345 M nss$U c 19 $(($(($U*16))+1)) 640 operator 346 M enss$U c 19 $(($(($U*16))+3)) 640 operator 347 RMlist="$RMlist scan$U" 348 MKlist="$MKlist;(umask 77;ln -s ss$U scan$U)" 349 ;; 350 351speaker) 352 M speaker c 27 0 660 audio 353 ;; 354 355*random) 356 M random c 45 0 644 357 M srandom c 45 1 644 358 M urandom c 45 2 644 359 M prandom c 45 3 644 360 M wrandom c 45 3 666 361 M arandom c 45 4 644 362 ;; 363 364rmidi*) 365 M rmidi$U c 52 $U 666 366 ;; 367 368radio*) 369 M radio$U c 76 $U 660 audio 370 MKlist="$MKlist;[ -e radio ] || ln -s radio$U radio" 371 ;; 372 373pf*) 374 M pf c 73 0 600 375 ;; 376 377pctr) 378 M pctr c 46 0 644 379 ;; 380 381pci) 382 M pci c 72 0 600 383 ;; 384 385music*) 386 M music$U c 53 $U 660 audio 387 M sequencer$U c 53 $(($U+128)) 660 audio 388 MKlist="$MKlist;[ -e music ] || ln -s music$U music" 389 MKlist="$MKlist;[ -e sequencer ] || ln -s sequencer$U sequencer" 390 ;; 391 392lkm) 393 M lkm c 28 0 640 _lkm 394 ;; 395 396joy*) 397 M joy$U c 26 $U 666 398 ;; 399 400iop*) 401 M iop$U c 75 $U 660 402 ;; 403 404gpr*) 405 M gpr$U c 80 $U 406 ;; 407 408fd) 409 RMlist="mkdir -p fd;$RMlist" n=0 410 while [ $n -lt 64 ];do M fd/$n c 22 $n;n=$(($n+1));done 411 MKlist="$MKlist;chmod 555 fd" 412 ;; 413 414crypto) 415 M crypto c 70 0 416 M tpm c 70 1 660 operator 417 ;; 418 419bpf*) 420 M bpf$U c 23 $U 600 421 ;; 422 423bktr*) 424 M bktr$U c 49 $U 644 425 ;; 426 427bio) 428 M bio c 79 0 600 429 ;; 430 431audio*) 432 M sound$U c 42 $U 660 audio 433 M mixer$U c 42 $(($U+16)) 660 audio 434 M audio$U c 42 $(($U+128)) 660 audio 435 M audioctl$U c 42 $(($U+192)) 660 audio 436 MKlist="$MKlist;[ -e audio ] || ln -s audio$U audio" 437 MKlist="$MKlist;[ -e mixer ] || ln -s mixer$U mixer" 438 MKlist="$MKlist;[ -e sound ] || ln -s sound$U sound" 439 MKlist="$MKlist;[ -e audioctl ] || ln -s audioctl$U audioctl" 440 ;; 441 442apm*) 443 M apm c 21 0 644 444 M apmctl c 21 8 644 445 ;; 446 447uscanner*) 448 M uscanner$U c 77 $U 660 449 ;; 450 451usb*) 452 [ "$i" = "usb" ] && u= || u=$U 453 M usb$u c 61 $U 660 454 ;; 455 456urio*) 457 M urio$U c 65 $U 660 458 ;; 459 460ulpt*) 461 M ulpt$U c 64 $U 660 462 ;; 463 464uhid*) 465 M uhid$U c 62 $U 660 466 ;; 467 468ugen*) 469 n=$(($U*16)) 470 for j in 0{0,1,2,3,4,5,6,7,8,9} 1{0,1,2,3,4,5} 471 do 472 M ugen$U.$j c 63 $(($n+10#$j)) 660 473 done 474 ;; 475 476ttyU[0-9a-zA-Z]) 477 U=${i#ttyU*} 478 o=$(alph2d $U) 479 M ttyU$U c 66 $o 660 dialer uucp 480 M cuaU$U c 66 $(($o+128)) 660 dialer uucp 481 ;; 482 483uall) 484 R ttyU0 ttyU1 ugen0 ugen1 ulpt0 ulpt1 uhid0 uhid1 uhid2 uhid3 485 R uscanner0 urio0 usb0 usb1 usb2 usb3 usb4 usb5 486 ;; 487 488lpt*|lpa*) 489 case $i in 490 lpt*) n=lpt f=0;; 491 lpa*) n=lpa f=128;; 492 esac 493 M $n$U c 16 $(($U+$f)) 600 494 ;; 495 496wsmouse[0-9]*) 497 M wsmouse$U c 68 $U 600 498 ;; 499 500wsmux|wsmouse|wskbd) 501 M wsmouse c 69 0 600 502 M wskbd c 69 1 600 503 ;; 504 505wskbd*) 506 M wskbd$U c 67 $U 600 507 ;; 508 509tty[C-F]*) 510 U=${i##tty[C-F]} 511 case $i in 512 ttyC*) n=C m=0;; 513 ttyD*) n=D m=256;; 514 ttyE*) n=E m=512;; 515 ttyF*) n=F m=768;; 516 esac 517 case $U in 518 [0-9a-f]) M tty$n$U c 12 $((16#$U+$m)) 600;; 519 cfg) M tty${n}cfg c 12 $((255+$m)) 600;; 520 *) echo bad unit $U for $i; exit 1;; 521 esac 522 ;; 523 524wscons) 525 R wsmouse0 wsmouse1 wsmouse2 wsmouse3 wskbd0 wskbd1 wskbd2 526 R wskbd3 wsmux ttyCcfg ttyC0 ttyC1 ttyC2 ttyC3 ttyC4 ttyC5 527 R ttyC6 ttyC7 ttyC8 ttyC9 ttyCa ttyCb 528 ;; 529 530pty*) 531 if [ $U -gt 15 ]; then 532 echo bad unit for pty in: $i 533 continue 534 fi 535 set -A letters p q r s t u v w x y z P Q R S T 536 set -A suffixes 0 1 2 3 4 5 6 7 8 9 \ 537 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 \ 538 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 539 540 name=${letters[$U]} 541 n=0 542 while [ $n -lt 62 ] 543 do 544 nam=$name${suffixes[$n]} 545 off=$(($U*62)) 546 M tty$nam c 5 $(($off+$n)) 547 M pty$nam c 6 $(($off+$n)) 548 n=$(($n+1)) 549 done 550 ;; 551 552ptm) 553 M ptm c 82 0 666 554 ;; 555 556tty[0-7][0-9a-f]) 557 U=${i#tty*} 558 o=$(h2d $U) 559 M tty$U c 8 $o 660 dialer uucp 560 M cua$U c 8 $(($o+128)) 660 dialer uucp 561 ;; 562 563wt*) 564 name=wt 565 n=$(($U*8)) m=$(($n+4)) 566 M $name$U b 3 $n 640 operator 567 M r$name$U c 10 $n 640 operator 568 M n$name$U b 3 $m 640 operator 569 M nr$name$U c 10 $m 640 operator 570 ;; 571 572st*) 573 n=$(($U*16)) 574 for pre in " " n e en 575 do 576 M ${pre}st$U b 5 $n 660 operator 577 M ${pre}rst$U c 14 $n 660 operator 578 n=$(($n+1)) 579 done 580 ;; 581 582ch*) 583 M ch$U c 17 $U 660 operator 584 ;; 585 586vnd*) 587 dodisk vnd $U 14 41 $U 0 588 dodisk svnd $U 14 41 $U 2048 589 ;; 590 591rd*) 592 dodisk2 rd $U 17 47 $U 0 593 ;; 594 595mcd*) 596 dodisk2 mcd $U 7 39 $U 0 597 ;; 598 599fd*) 600 typnam=$U${i#fd[01]*} 601 case $typnam in 602 0|1) typnum=0;; # no type specified, assume A 603 *A) typnum=0; typnam=0;; 604 *B) typnum=1;; 605 *C) typnum=2;; 606 *D) typnum=3;; 607 *E) typnum=4;; 608 *F) typnum=5;; 609 *G) typnum=6;; 610 *H) typnum=7;; 611 *) echo bad type $typnam for $i; exit 1;; 612 esac 613 case $U in 614 0|1) blk=2; chr=9;; 615 *) echo bad unit $U for $i; exit 1;; 616 esac 617 nam=fd${typnam} 618 n=$(($(($U*128))+$(($typnum*16)))) 619 M ${nam}a b $blk $n 640 operator 620 M ${nam}b b $blk $(($n+1)) 640 operator 621 M ${nam}c b $blk $(($n+2)) 640 operator 622 M r${nam}a c $chr $n 640 operator 623 M r${nam}b c $chr $(($n+1)) 640 operator 624 M r${nam}c c $chr $(($n+2)) 640 operator 625 ;; 626 627cd*) 628 dodisk2 cd $U 6 15 $U 0 629 ;; 630 631local) 632 test -s $T.local && sh $T.local 633 ;; 634 635all) 636 R bktr0 ccd0 ccd1 ccd2 ccd3 vnd0 vnd1 vnd2 vnd3 sd0 sd1 sd2 637 R sd3 sd4 cd0 cd1 rd0 tun0 tun1 tun2 tun3 crypto bio bpf0 bpf1 638 R bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9 pty0 fd1 fd1B fd1C 639 R fd1D fd1E fd1F fd1G fd1H fd0 fd0B fd0C fd0D fd0E fd0F fd0G 640 R fd0H ss0 ss1 ch0 ptm gpr0 local wscons pci iop0 iop1 uall 641 R rmidi0 rmidi1 rmidi2 rmidi3 rmidi4 rmidi5 rmidi6 rmidi7 642 R tuner0 radio0 music0 speaker audio0 wdt0 wt0 uk0 random joy0 643 R joy1 lpa0 lpa1 lpa2 lpt0 lpt1 lpt2 lkm tty00 tty01 tty02 644 R tty03 ttyc0 ttyc1 ttyc2 ttyc3 ttyc4 ttyc5 ttyc6 ttyc7 apm pf 645 R pctr systrace wd0 wd1 wd2 wd3 raid0 raid1 raid2 raid3 std 646 R st0 st1 fd mcd0 647 ;; 648 649wd*|sd*|raid*|ccd*) 650 case $i in 651 wd*) dodisk wd $U 0 3 $U 0;; 652 sd*) dodisk sd $U 4 13 $U 0;; 653 raid*) dodisk raid $U 19 54 $U 0;; 654 ccd*) dodisk ccd $U 16 18 $U 0;; 655 esac 656 ;; 657 658*) 659 echo $i: unknown device 660 ;; 661esac 662done 663} 664R "$@" 665list="$RMlist" 666for mode in $modes; do 667 list="$list;${mklist[$mode]}" 668done 669for group in $groups; do 670 list="$list;${grplist[$group]}" 671done 672list="$list;$MKlist" 673if [ "$eo" = "echo" ]; then 674 $eo "$list" 675else 676 echo "$list" | sh 677fi 678