Make the progress event work even after restoring from a checkpoint

--HG--
extra : convert_revision : 80e31eb26250700ebe3ce5848e570068cc76ef47
This commit is contained in:
Nathan Binkert 2004-02-29 18:49:44 -05:00
parent 2272164d66
commit 31f82cef41

View file

@ -28,11 +28,13 @@
#include <string>
#include "sim/param.hh"
#include "sim/eventq.hh"
#include "base/callback.hh"
#include "base/hostinfo.hh"
#include "sim/eventq.hh"
#include "sim/param.hh"
#include "sim/sim_events.hh"
#include "sim/sim_exit.hh"
#include "sim/sim_init.hh"
#include "sim/sim_stats.hh"
using namespace std;
@ -178,7 +180,7 @@ class ProgressEvent : public Event
ProgressEvent::ProgressEvent(EventQueue *q, Tick _interval)
: Event(q), interval(_interval)
{
schedule(interval);
schedule(curTick + interval);
}
//
@ -221,10 +223,24 @@ ProgressParamContext progessMessageParams("progress");
Param<Tick> progress_interval(&progessMessageParams, "cycle",
"cycle interval for progress messages");
namespace {
struct SetupProgress : public Callback
{
Tick interval;
SetupProgress(Tick tick) : interval(tick) {}
virtual void process()
{
new ProgressEvent(&mainEventQueue, interval);
delete this;
}
};
}
/* check execute options */
void
ProgressParamContext::checkParams()
{
if (progress_interval.isValid())
new ProgressEvent(&mainEventQueue, progress_interval);
registerInitCallback(new SetupProgress(progress_interval));
}