summaryrefslogtreecommitdiff
path: root/src/sim/eventq.hh
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2007-05-09 22:34:54 -0400
committerAli Saidi <saidi@eecs.umich.edu>2007-05-09 22:34:54 -0400
commit9dfbea68a204ca93ef9d20a13dd2fe7288121c75 (patch)
tree50c8b08d03f16b0450b2da4247babf9dae7a7e20 /src/sim/eventq.hh
parentff55888575af9e661697882736741ea6d4613303 (diff)
downloadgem5-9dfbea68a204ca93ef9d20a13dd2fe7288121c75.tar.xz
update for new reschedule semantics
--HG-- extra : convert_revision : 8c18b2513d638f67cc096e7f1483b47390a374ca
Diffstat (limited to 'src/sim/eventq.hh')
-rw-r--r--src/sim/eventq.hh17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh
index a57e9077e..974313968 100644
--- a/src/sim/eventq.hh
+++ b/src/sim/eventq.hh
@@ -210,7 +210,8 @@ class Event : public Serializable, public FastAlloc
void schedule(Tick t);
/// Reschedule the event with the current priority
- void reschedule(Tick t);
+ // always parameter means to schedule if not already scheduled
+ void reschedule(Tick t, bool always = false);
/// Remove the event from the current schedule
void deschedule();
@@ -402,16 +403,22 @@ Event::deschedule()
}
inline void
-Event::reschedule(Tick t)
+Event::reschedule(Tick t, bool always)
{
- assert(scheduled());
- clearFlags(Squashed);
+ assert(scheduled() || always);
#if TRACING_ON
when_scheduled = curTick;
#endif
_when = t;
- queue->reschedule(this);
+
+ if (scheduled()) {
+ clearFlags(Squashed);
+ queue->reschedule(this);
+ } else {
+ setFlags(Scheduled);
+ queue->schedule(this);
+ }
}
inline void