* Authors: Nathan Binkert
*/
+#include "sim/sim_events.hh"
+
#include <string>
#include "base/callback.hh"
#include "base/hostinfo.hh"
#include "sim/eventq_impl.hh"
-#include "sim/sim_events.hh"
#include "sim/sim_exit.hh"
#include "sim/stats.hh"
GlobalSimLoopExitEvent::GlobalSimLoopExitEvent(Tick when,
const std::string &_cause,
- int c, Tick r, bool serialize)
- : GlobalEvent(when, Sim_Exit_Pri,
- IsExitEvent | (serialize ? AutoSerialize : 0)),
+ int c, Tick r)
+ : GlobalEvent(when, Sim_Exit_Pri, IsExitEvent),
cause(_cause), code(c), repeat(r)
{
}
exitSimLoop(const std::string &message, int exit_code, Tick when, Tick repeat,
bool serialize)
{
- new GlobalSimLoopExitEvent(when + simQuantum, message, exit_code, repeat,
- serialize);
-}
+ warn_if(serialize && (when != curTick() || repeat),
+ "exitSimLoop called with a delay and auto serialization. This is "
+ "currently unsupported.");
-LocalSimLoopExitEvent::LocalSimLoopExitEvent()
- : Event(Sim_Exit_Pri, IsExitEvent | AutoSerialize),
- cause(""), code(0), repeat(0)
-{
+ new GlobalSimLoopExitEvent(when + simQuantum, message, exit_code, repeat);
}
LocalSimLoopExitEvent::LocalSimLoopExitEvent(const std::string &_cause, int c,
- Tick r, bool serialize)
- : Event(Sim_Exit_Pri, IsExitEvent | (serialize ? AutoSerialize : 0)),
+ Tick r)
+ : Event(Sim_Exit_Pri, IsExitEvent),
cause(_cause), code(c), repeat(r)
{
}
void
LocalSimLoopExitEvent::serialize(CheckpointOut &cp) const
{
- paramOut(cp, "type", string("SimLoopExitEvent"));
Event::serialize(cp);
SERIALIZE_SCALAR(cause);
UNSERIALIZE_SCALAR(repeat);
}
-void
-LocalSimLoopExitEvent::unserializeEvent(CheckpointIn &cp, EventQueue *eventq)
-{
- Event::unserializeEvent(cp, eventq);
-
- UNSERIALIZE_SCALAR(cause);
- UNSERIALIZE_SCALAR(code);
- UNSERIALIZE_SCALAR(repeat);
-}
-
-Serializable *
-LocalSimLoopExitEvent::createForUnserialize(CheckpointIn &cp,
- const string §ion)
-{
- return new LocalSimLoopExitEvent();
-}
-
-REGISTER_SERIALIZEABLE("LocalSimLoopExitEvent", LocalSimLoopExitEvent)
-
//
// constructor: automatically schedules at specified time
//