#! /bin/sh
# ----------------------------------------------------------
# script for monitoring PROGRAM compiled with PG_PVM enabled
# ----------------------------------------------------------

#PROGRAM="pmap"
PROGRAM="buffer_p"
PVMHOSTS=/home/miro/pvm3/hostfile
#PG_HOSTS="sun1 sierra upsymido ups sfinx upsydobr nic"
#PG_HOSTS="sun1 upsymido ups upsydobr nic"
PG_HOSTS="sun1"

PVMDF=/tmp/pvmd.1001
TRCF=$HOME/trace.trf
#echo ...starting PVM ...
if [ -f $PVMDF ]
then
 echo "PVM is already started! ($PVMDF exists)"
else
 echo ...starting PVM...
 $PVM_ROOT/lib/pvmd $PVMHOSTS >/dev/null &
 until [ -f $PVMDF ]
  do
  sleep 1
 done
# echo "waiting 3 seconds for PVM have started..."
# sleep 3
fi

pvmadd $PG_HOSTS

#echo ...starting PG server...
$PVM_ROOT/pg/lib/$PVM_ARCH/pgserver

rm -f $TRCF
rm -f $HOME/pganim.dot
rm -f $HOME/pgrc
rm -f $HOME/pgmap

#--------- run monitored program -----------
cd $HOME/wo/map
if [ $PROGRAM = "pmap" ]
then
 if [ a$1 = a ]
 then
  pmap -
 else
  pmap $*
 fi
else
 $PROGRAM
fi

#------ waiting for creation of trace file ----
until [ -s $TRCF ]
 do
 echo "waiting for creating trace file..."
 sleep 1
 echo "[2A"
done
 echo "                                  "

siztr0=0
siztr=1
until [ $siztr = $siztr0 ]
 do
  siztr0=$siztr
  siztr=`ls -l $TRCF|awk '{print $5 }' -`
  sleep 2
  echo "[2A"
  echo "waiting for finishing trace file...size=$siztr" 
done

#exit

#------ kill pgserver (it is a big power consumer!) ----
if [ $PVM_ARCH = "SUN4SOL2" ]
then
 `ps -u miro|grep pg_serv|grep -v grep|awk '{print "kill " $1 }' - `
else
 `ps -ucx|grep miro|grep pg_serv|grep -v grep|awk '{print "kill " $2 }' - `
fi

sh pg &

#pvmhalt
