summaryrefslogtreecommitdiff
path: root/src/mem/ruby/common/Consumer.hh
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2012-09-18 22:46:34 -0500
committerNilay Vaish <nilay@cs.wisc.edu>2012-09-18 22:46:34 -0500
commit86b1c0fd540b57c1e7bba948ad0417f22f90eb41 (patch)
treec4dc42939158c13b5eeff2f6809fa800c99e490b /src/mem/ruby/common/Consumer.hh
parentd2b57a7473768e8aff3707916b40b264cab6821c (diff)
downloadgem5-86b1c0fd540b57c1e7bba948ad0417f22f90eb41.tar.xz
ruby: avoid using g_system_ptr for event scheduling
This patch removes the use of g_system_ptr for event scheduling. Each consumer object now needs to specify upfront an EventManager object it would use for scheduling events. This makes the ruby memory system more amenable for a multi-threaded simulation.
Diffstat (limited to 'src/mem/ruby/common/Consumer.hh')
-rw-r--r--src/mem/ruby/common/Consumer.hh7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/mem/ruby/common/Consumer.hh b/src/mem/ruby/common/Consumer.hh
index 6a67bde39..a10abf362 100644
--- a/src/mem/ruby/common/Consumer.hh
+++ b/src/mem/ruby/common/Consumer.hh
@@ -44,8 +44,8 @@
class Consumer
{
public:
- Consumer()
- : m_last_scheduled_wakeup(0), m_last_wakeup(0)
+ Consumer(EventManager *_em)
+ : m_last_scheduled_wakeup(0), m_last_wakeup(0), em(_em)
{
}
@@ -88,8 +88,6 @@ class Consumer
m_scheduled_wakeups.erase(time);
}
- void scheduleEvent(EventManager* em, Time timeDelta);
- void scheduleEventAbsolute(EventManager* em, Time timeAbs);
void scheduleEvent(Time timeDelta);
void scheduleEventAbsolute(Time timeAbs);
@@ -97,6 +95,7 @@ class Consumer
Tick m_last_scheduled_wakeup;
std::set<Tick> m_scheduled_wakeups;
Tick m_last_wakeup;
+ EventManager *em;
class ConsumerEvent : public Event
{