#!/bin/sh

#
# This is a tricky script to understand. When run in M5, it creates
# a checkpoint after Linux boot up, but before any benchmarks have
# been run. By playing around with environment variables, we can
# detect whether the checkpoint has been taken.
#  - If the checkpoint hasn't been taken, the script allows M5 to checkpoint the system,
# re-read this script into a new tmp file, and re-run it. On the
# second execution of this script (checkpoint has been taken), the
# environment variable is already set, so the script will exit the
# simulation
#  - When we restore the simulation from a checkpoint, we can
# specify a new script for M5 to execute in the full-system simulation,
# and it will be executed as if a checkpoint had just been taken.
#
# Author:
#   Joel Hestness, hestness@cs.utexas.edu
#   while at AMD Research and Advanced Development Lab
# Date:
#   10/5/2010
#

# Test if the RUNSCRIPT_VAR environment variable is already set

if [ "${RUNSCRIPT_VAR+set}" != set ]
then
	# Signal our future self that it's safe to continue
	export RUNSCRIPT_VAR=1
else
	# We've already executed once, so we should exit
	/sbin/m5 exit
fi

# Checkpoint the first execution
echo "Checkpointing simulation..."
/sbin/m5 checkpoint

# Test if we previously okayed ourselves to run this script
if [ "$RUNSCRIPT_VAR" -eq 1 ]
then

	# Signal our future self not to recurse infinitely
	export RUNSCRIPT_VAR=2

	# Read the script for the checkpoint restored execution
	echo "Loading new script..."
	/sbin/m5 readfile > /tmp/runscript
	chmod 755 /tmp/runscript

	# Execute the new runscript
	if [ -s /tmp/runscript ]
	then
		exec /tmp/runscript
	else
		echo "Script not specified. Dropping into shell..."
		/bin/bash
	fi

fi

echo "Fell through script. Exiting..."
/sbin/m5 exit
