summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-05-11 13:01:49 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-05-11 13:01:49 +0000
commitd8e0a60b9b56f6514cedc59c9af16b9c78eac060 (patch)
treeeb47df5a5ff7d4e13d17d02b8e7df2d10d530d4c
parent2001-05-11 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-d8e0a60b9b56f6514cedc59c9af16b9c78eac060.tar.bz2
2001-05-11 Joel Sherrill <joel@OARcorp.com>
* tools/runtest: Add functionality to avoid letting simulator run too long.
-rw-r--r--c/src/lib/libbsp/mips/jmr3904/ChangeLog5
-rwxr-xr-xc/src/lib/libbsp/mips/jmr3904/tools/runtest31
2 files changed, 31 insertions, 5 deletions
diff --git a/c/src/lib/libbsp/mips/jmr3904/ChangeLog b/c/src/lib/libbsp/mips/jmr3904/ChangeLog
index f9a9eb4eae..b468de5725 100644
--- a/c/src/lib/libbsp/mips/jmr3904/ChangeLog
+++ b/c/src/lib/libbsp/mips/jmr3904/ChangeLog
@@ -1,3 +1,8 @@
+2001-05-11 Joel Sherrill <joel@OARcorp.com>
+
+ * tools/runtest: Add functionality to avoid letting simulator
+ run too long.
+
2001-04-20 Joel Sherrill <joel@OARcorp.com>
* include/bsp.h (Clear_tm27_intr): Stop the timer and disable
diff --git a/c/src/lib/libbsp/mips/jmr3904/tools/runtest b/c/src/lib/libbsp/mips/jmr3904/tools/runtest
index aee74edd63..ade7cf1b83 100755
--- a/c/src/lib/libbsp/mips/jmr3904/tools/runtest
+++ b/c/src/lib/libbsp/mips/jmr3904/tools/runtest
@@ -213,12 +213,33 @@ do
fi
# Spin off the simulator in the background
- # -c sets an instruction limit
- # XXX need to make sure it won't run forever...
-
- ${simulator} --board=jmr3904 $tfile | \
- sed -e 's/ //' -e '/^$/d' > ${logfile}
+ ${simulator} --board=jmr3904 $tfile | \
+ sed -e 's/ //' -e '/^$/d' > ${logfile} 2>&1 &
+ pid=$!
+
+ # Make sure it won't run forever...
+ time_run=0
+ while [ $time_run -lt $max_run_time ]
+ do
+ # sleep 5s at a time waiting for job to finish or timer to expire
+ # if job has exited, then we exit, too.
+ sleep 5
+ kill -0 $pid 2> /dev/null
+ running=$?
+ if [ $running -eq 0 ]
+ then
+ time_run=$((time_run + 5))
+ if [ $time_run -ge $max_run_time ]
+ then
+ kill -9 $pid 2> /dev/null
+ ran_too_long="yes"
+ fi
+ else
+ ran_too_long="no"
+ break
+ fi
+ done
fi
# Create the info files