summaryrefslogtreecommitdiff
path: root/src/sim/eventq.hh
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2007-05-13 04:48:42 -0400
committerAli Saidi <saidi@eecs.umich.edu>2007-05-13 04:48:42 -0400
commit404a91265efbf1a039fe1e19a8c1d8ff86a904b1 (patch)
tree3d4c5f1d882fa0c521acf273e8d00fd2a3abdd46 /src/sim/eventq.hh
parent376cff64bd3ac5bafd8fa566674964fd4836790c (diff)
parent011db5c8515804145202373440bad26fa21b30a7 (diff)
downloadgem5-404a91265efbf1a039fe1e19a8c1d8ff86a904b1.tar.xz
Merge zizzer.eecs.umich.edu:/z/m5/Bitkeeper/newmem
into zizzer.eecs.umich.edu:/tmp/newmem --HG-- extra : convert_revision : 162876cb1ad96ca7ca6a2e0f549c98b29e5a8d2d
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