X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmem%2Fruby%2Fcommon%2FConsumer.cc;h=59605d51b70f26b63137f0e1977fe1b90618acf2;hb=16ac48e6a419b75e6a9e86fab9cd2fd62ef9a574;hp=a829f4d998e79dff65e16924c7e645119f58386a;hpb=cf232de4615f0fe9435d6e92a1d6319c972a8c88;p=gem5.git diff --git a/src/mem/ruby/common/Consumer.cc b/src/mem/ruby/common/Consumer.cc index a829f4d99..59605d51b 100644 --- a/src/mem/ruby/common/Consumer.cc +++ b/src/mem/ruby/common/Consumer.cc @@ -28,22 +28,26 @@ #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::iterator bit = m_scheduled_wakeups.begin(); + set::iterator eit = m_scheduled_wakeups.lower_bound(t); + m_scheduled_wakeups.erase(bit,eit); }