home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / etc / etc.vax / MAKEDEV < prev    next >
Encoding:
Text File  |  1991-04-08  |  10.7 KB  |  407 lines

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