ruby: drop NetworkMessage class
[gem5.git] / src / mem / ruby / common / Consumer.cc
index a829f4d998e79dff65e16924c7e645119f58386a..59605d51b70f26b63137f0e1977fe1b90618acf2 100644 (file)
 
 #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);
 }