Initial add of defaria.com
[clearscm.git] / defaria.com / Computers / code / adm / bin / sysmodel
1 #!/bin/bash
2 # Oslo Feb. 2 1995
3 # sys_info 1.3, a hack by Ole Kristian Foss, HPNAS,
4 # to display HP9000 model and the clock frequency of the CPU(s)
5 # Version 1.0                                                 Oslo Jan. 25
6 1995
7 # Version 1.1 added call to the $SCHED_FILE.                  Oslo Jan. 25
8 1995
9 # Version 1.2 added the get_physmem function.                 Oslo Feb. 2
10 1995
11 # Version 1.3 added limited functionality for HP-UX 10.X.     Oslo Feb. 28
12 1995
13 # Version 1.4 more robust 10.X handling.                      Oslo Mar. 13
14 1996
15 #             This version should handle all cominations of
16 #             HP-UX 9.X and 10.X as well as S700 and S800
17 #
18 #
19 # Initialize variables:
20 ADB="adb -k"
21 ADB_CMD=""
22 MODEL=""
23 PA_INFO=""
24 PA_RISC=""
25 CPU_REV=""
26 OS_REV=""
27 VER="1.4"
28 CORES=""
29 PROG=`basename $0`
30 SCHED_FILE="/usr/lib/sched.models"
31 export PATH=/etc:/bin:/usr/bin
32 typeset -R4 ID=""
33 typeset -i FADB_OUT
34 typeset -i MHZ
35 typeset -i HZ
36 typeset -i SPEED
37 #
38 function usage
39 {
40         print -u2 "Usage: $PROG <-h|-m> [-v]"
41         exit 1
42 }
43 #
44 function get_os_rev
45 {
46         OS_REV=`uname -r| cut -f2 -d"."`
47         case $OS_REV in
48                 09) CORES="/hp-ux /dev/kmem"
49                    if /bin/hp9000s700
50                    then
51                         ADB_CMD="mpproc_info+34/X"
52                    elif /bin/hp9000s800
53                    then
54                          ADB_CMD="mpproc_info+1E8/X"
55                    else
56                         echo "This machine is not supported by $PROG"
57                    exit 1
58                    fi ;;
59
60                 10) CORES="/stand/vmunix /dev/kmem"
61                     ADB_CMD="_mpproc_info+270/X" ;;
62
63                  *) echo "$PROG does not support this version of HP-UX"
64                     exit 1 ;;
65         esac
66
67 }
68 function get_id
69 {
70         ID=`echo $ADB_CMD | $ADB $CORES |  tail -1 | cut -d: -f 2`
71 }
72 #
73 #
74 function get_model
75 {
76         case $ID in
77                 "  40"|0040) MODEL="840" ;;
78                 "  80"|0080) MODEL="825" ;;
79                 "  A0"|00A0) MODEL="835/635" ;;
80                 "  B0"|00B0) MODEL="845/645" ;;
81                 "  C0"|00C0) MODEL="850" ;;
82                 " 810"|0810) MODEL="855" ;;
83                 " 820"|0820) MODEL="860" ;;
84                 " 830"|0830) MODEL="865/870" ;;
85                 1010) MODEL="822" ;;
86                 1020) MODEL="832" ;;
87                 1040) MODEL="842" ;;
88                 1050) MODEL="852" ;;
89                 1810) MODEL="890" ;;
90                 1820) MODEL="891/T500" ;;
91                 1830) MODEL="892/T520" ;;
92                 2000) MODEL="720" ;;
93                 2010) MODEL="750" ;;
94                 2020) MODEL="730" ;;
95                 2030) MODEL="735" ;;
96                 2040) MODEL="755" ;;
97                 2060) MODEL="735/125" ;;
98                 2800) MODEL="817/F20" ;;
99                 2800) MODEL="827/H20" ;;
100                 2810) MODEL="837/F30" ;;
101                 2810) MODEL="847/G30/H30" ;;
102                 2810) MODEL="857/I30" ;;
103                 2820) MODEL="807/F10" ;;
104                 2830) MODEL="867/G40/H40" ;;
105                 2830) MODEL="877/I40" ;;
106                 2840) MODEL="887/G50/H50" ;;
107                 2840) MODEL="897/I50" ;;
108                 2870) MODEL="887/G70/H70" ;;
109                 2870) MODEL="897/I70" ;;
110                 2880) MODEL="887/G60/H60" ;;
111                 2880) MODEL="897/I60" ;;
112                 3000) MODEL="710" ;;
113                 3020) MODEL="705" ;;
114                 3100) MODEL="715/50" ;;
115                 3110) MODEL="715/33" ;;
116                 3120) MODEL="715s/50" ;;
117                 3130) MODEL="715s/33" ;;
118                 3140) MODEL="715t/50" ;;
119                 3150) MODEL="715t/33" ;;
120                 3160) MODEL="715/75" ;;
121                 3180) MODEL="725/50" ;;
122                 3190) MODEL="725/75" ;;
123                 4010) MODEL="745i/50" ;;
124                 4020) MODEL="742i" ;;
125                 4030) MODEL="745i/100" ;;
126                 4800) MODEL="806/E25" ;;
127                 4810) MODEL="816/E35" ;;
128                 4820) MODEL="826/E45" ;;
129                 4830|4831) MODEL="856/E55" ;;
130                 5800) MODEL="809/K100" ;;
131                 5810) MODEL="839/K210" ;;
132                 5820) MODEL="829/K400" ;;
133                 5830) MODEL="849/K410" ;;
134                 5870) MODEL="841/D210/D410" ;;
135                 5880) MODEL="851/D210/D4102-way" ;;
136                 5890) MODEL="821/D200/D400" ;;
137                 58A0) MODEL="831/D200/D4002-way" ;;
138                 58B0) MODEL="819/K200" ;;
139                 58C0) MODEL="859/K230" ;;
140                 58D0) MODEL="869/K430" ;;
141                 6000) MODEL="712/60" ;;
142                 6010) MODEL="712/80" ;;
143                 6020) MODEL="712/100" ;;
144                 6030) MODEL="743i/60" ;;
145                 6040) MODEL="743i/100" ;;
146                 60A0) MODEL="715/64" ;;
147                 60B0) MODEL="715/100" ;;
148                 60D0) MODEL="725/100" ;;
149                 6170) MODEL="V743i" ;;
150                 6180) MODEL="V743i/100" ;;
151                 6190) MODEL="715/80" ;;
152                 61A0) MODEL="811/DX5" ;;
153                 61B0) MODEL="801/DXO" ;;
154                 *)     MODEL="UNKNOWN" ;;
155         esac
156 }
157 #
158 function get_tics
159 {
160         ADB_CMD="itick_per_tick/D"
161         FADB_OUT=`echo $ADB_CMD | $ADB $CORES | tail -1 | cut -f 2`
162 #
163         if [ $1 = "HZ" ]
164         then
165                 ((HZ=$FADB_OUT * 100))
166                 SPEED=$HZ
167         else
168                 ((MHZ=$FADB_OUT / 10000))
169                 SPEED=$MHZ
170         fi
171 }
172 #
173 function get_physmem
174 {
175         ADB_CMD="physmem/D"
176         PHYS_MEM=`echo $ADB_CMD | $ADB $CORES | tail -1 | \
177         awk '$2 > 0 { print $2 / 256 }' `
178         echo "Your system has $PHYS_MEM Mbyte ram installed"
179 }
180 #
181 function get_painfo
182 {
183         MODEL="`echo $MODEL|cut -f1 -d'/'`"
184         PA_INFO=`grep ^$MODEL $SCHED_FILE`
185         if [  -n "$PA_INFO" ]
186         then
187                 PA_RISC="`echo $PA_INFO | cut -d' ' -f 3 `"
188                 CPU_REV="`echo $PA_INFO | cut -d' ' -f 2 `"
189                 echo "The PA-RISC processor(s) is of type $PA_RISC rev.
190 $CPU_REV"
191         fi
192 }
193
194 ## Main program ##
195 if [ $# -eq 0 ]
196 then
197         usage
198         exit 1
199 fi
200 #
201 if [ `whoami` != "root" ]
202 then
203         echo "You must be root to run $PROG ! "
204         exit 1
205 fi
206
207 while getopts :mMhHv OPT
208 do case $OPT in
209    h|H) get_os_rev
210         get_id
211         get_model
212         get_tics HZ
213         print "Your HP9000 Model $MODEL has CPU(s) running at $SPEED Hz"
214         get_painfo
215         get_physmem
216         ;;
217    m|M) get_os_rev
218         get_id
219         get_model
220         get_tics MHZ
221         print "Your HP9000 Model $MODEL has CPU(s) running at $SPEED MHz"
222         get_painfo
223         get_physmem
224         ;;
225      v) echo "You are running version $VER of $PROG"
226         ;;
227    \?)  print -u2 "$PROG: unknown option $OPTARG"
228         usage
229    esac
230 done