#include "mem/ruby/common/Consumer.hh"
+using namespace std;
+
void
-Consumer::scheduleEvent(Time timeDelta)
+Consumer::scheduleEvent(Cycles timeDelta)
{
- scheduleEventAbsolute(timeDelta + em->curCycle());
+ scheduleEventAbsolute(em->clockEdge(timeDelta));
}
void
-Consumer::scheduleEventAbsolute(Time timeAbs)
+Consumer::scheduleEventAbsolute(Tick evt_time)
{
- Tick evt_time = em->clockPeriod() * timeAbs;
if (!alreadyScheduled(evt_time)) {
// This wakeup is not redundant
ConsumerEvent *evt = new ConsumerEvent(this);
- assert(timeAbs > em->curCycle());
-
em->schedule(evt, evt_time);
insertScheduledWakeupTime(evt_time);
}
+
+ Tick t = em->clockEdge();
+ set<Tick>::iterator bit = m_scheduled_wakeups.begin();
+ set<Tick>::iterator eit = m_scheduled_wakeups.lower_bound(t);
+ m_scheduled_wakeups.erase(bit,eit);
}