diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/common/Consumer.hh --- a/src/mem/ruby/common/Consumer.hh Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/common/Consumer.hh Thu Sep 13 09:59:09 2012 -0500 @@ -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 @@ 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 @@ Tick m_last_scheduled_wakeup; std::set m_scheduled_wakeups; Tick m_last_wakeup; + EventManager *em; class ConsumerEvent : public Event { diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/common/Consumer.cc --- a/src/mem/ruby/common/Consumer.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/common/Consumer.cc Thu Sep 13 09:59:09 2012 -0500 @@ -33,24 +33,12 @@ void Consumer::scheduleEvent(Time timeDelta) { - scheduleEvent(g_system_ptr, timeDelta); -} - -void -Consumer::scheduleEvent(EventManager *em, Time timeDelta) -{ - scheduleEventAbsolute(em, timeDelta + g_system_ptr->getTime()); + scheduleEventAbsolute(timeDelta + g_system_ptr->getTime()); } void Consumer::scheduleEventAbsolute(Time timeAbs) { - scheduleEventAbsolute(g_system_ptr, timeAbs); -} - -void -Consumer::scheduleEventAbsolute(EventManager *em, Time timeAbs) -{ Tick evt_time = g_system_ptr->clockPeriod() * timeAbs; if (!alreadyScheduled(evt_time)) { // This wakeup is not redundant diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.cc Thu Sep 13 09:59:09 2012 -0500 @@ -35,7 +35,7 @@ using namespace std; using m5::stl_helpers::deletePointers; -InputUnit_d::InputUnit_d(int id, Router_d *router) +InputUnit_d::InputUnit_d(int id, Router_d *router) : Consumer(router) { m_id = id; m_router = router; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc Thu Sep 13 09:59:09 2012 -0500 @@ -44,6 +44,7 @@ NetworkInterface_d::NetworkInterface_d(int id, int virtual_networks, GarnetNetwork_d *network_ptr) + : Consumer(network_ptr) { m_id = id; m_net_ptr = network_ptr; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc Thu Sep 13 09:59:09 2012 -0500 @@ -32,7 +32,7 @@ #include "mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh" NetworkLink_d::NetworkLink_d(const Params *p) - : SimObject(p) + : SimObject(p), Consumer(this) { m_latency = p->link_latency; channel_width = p->channel_width; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.cc Thu Sep 13 09:59:09 2012 -0500 @@ -36,6 +36,7 @@ using m5::stl_helpers::deletePointers; OutputUnit_d::OutputUnit_d(int id, Router_d *router) + : Consumer(router) { m_id = id; m_router = router; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc Thu Sep 13 09:59:09 2012 -0500 @@ -35,6 +35,7 @@ #include "mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.hh" SWallocator_d::SWallocator_d(Router_d *router) + : Consumer(router) { m_router = router; m_num_vcs = m_router->get_num_vcs(); diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc Thu Sep 13 09:59:09 2012 -0500 @@ -37,6 +37,7 @@ using m5::stl_helpers::deletePointers; Switch_d::Switch_d(Router_d *router) + : Consumer(router) { m_router = router; m_num_vcs = m_router->get_num_vcs(); diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc --- a/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc Thu Sep 13 09:59:09 2012 -0500 @@ -35,6 +35,7 @@ #include "mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.hh" VCallocator_d::VCallocator_d(Router_d *router) + : Consumer(router) { m_router = router; m_num_vcs = m_router->get_num_vcs(); diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh --- a/src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh Thu Sep 13 09:59:09 2012 -0500 @@ -38,6 +38,7 @@ class FlexibleConsumer : public Consumer { public: + FlexibleConsumer(EventManager *em) : Consumer(em) {} virtual bool isBufferNotFull(int vc, int inport) { return true; } virtual void grant_vc(int out_port, int vc, Time grant_time) {} virtual void release_vc(int out_port, int vc, Time release_time) {} diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc Thu Sep 13 09:59:09 2012 -0500 @@ -44,6 +44,7 @@ NetworkInterface::NetworkInterface(int id, int virtual_networks, GarnetNetwork *network_ptr) + : FlexibleConsumer(network_ptr) { m_id = id; m_net_ptr = network_ptr; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc Thu Sep 13 09:59:09 2012 -0500 @@ -32,7 +32,7 @@ #include "mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh" NetworkLink::NetworkLink(const Params *p) - : SimObject(p) + : SimObject(p), FlexibleConsumer(this) { linkBuffer = new flitBuffer(); m_in_port = 0; @@ -140,7 +140,7 @@ flit *t_flit = link_srcQueue->getTopFlit(); t_flit->set_time(g_system_ptr->getTime() + m_latency); linkBuffer->insert(t_flit); - link_consumer->scheduleEvent(this, m_latency); + link_consumer->scheduleEvent(m_latency); m_link_utilized++; m_vc_load[t_flit->get_vc()]++; } diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/flexible-pipeline/Router.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc Thu Sep 13 09:59:09 2012 -0500 @@ -41,7 +41,7 @@ using m5::stl_helpers::deletePointers; Router::Router(const Params *p) - : BasicRouter(p) + : BasicRouter(p), FlexibleConsumer(this) { m_id = p->router_id; m_virtual_networks = p->virt_nets; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.cc --- a/src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.cc Thu Sep 13 09:59:09 2012 -0500 @@ -32,6 +32,7 @@ #include "mem/ruby/network/garnet/flexible-pipeline/VCarbiter.hh" VCarbiter::VCarbiter(Router *router) + : Consumer(router) { m_router = router; } diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/simple/PerfectSwitch.cc --- a/src/mem/ruby/network/simple/PerfectSwitch.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/simple/PerfectSwitch.cc Thu Sep 13 09:59:09 2012 -0500 @@ -49,6 +49,7 @@ } PerfectSwitch::PerfectSwitch(SwitchID sid, SimpleNetwork* network_ptr) + : Consumer(network_ptr) { m_virtual_networks = network_ptr->getNumberOfVirtualNetworks(); m_switch_id = sid; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/simple/Switch.hh --- a/src/mem/ruby/network/simple/Switch.hh Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/simple/Switch.hh Thu Sep 13 09:59:09 2012 -0500 @@ -42,8 +42,6 @@ #include #include -#include "mem/ruby/common/Global.hh" - class MessageBuffer; class PerfectSwitch; class NetDest; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/simple/Switch.cc --- a/src/mem/ruby/network/simple/Switch.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/simple/Switch.cc Thu Sep 13 09:59:09 2012 -0500 @@ -74,7 +74,8 @@ // Create a throttle throttle_ptr = new Throttle(m_switch_id, m_throttles.size(), link_latency, - bw_multiplier, net_ptr->getEndpointBandwidth()); + bw_multiplier, net_ptr->getEndpointBandwidth(), + net_ptr); m_throttles.push_back(throttle_ptr); // Create one buffer per vnet (these are intermediaryQueues) @@ -214,4 +215,3 @@ // FIXME printing out << "[Switch]"; } - diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/simple/Throttle.hh --- a/src/mem/ruby/network/simple/Throttle.hh Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/simple/Throttle.hh Thu Sep 13 09:59:09 2012 -0500 @@ -53,9 +53,10 @@ { public: Throttle(int sID, NodeID node, int link_latency, - int link_bandwidth_multiplier, int endpoint_bandwidth); + int link_bandwidth_multiplier, int endpoint_bandwidth, + EventManager *em); Throttle(NodeID node, int link_latency, int link_bandwidth_multiplier, - int endpoint_bandwidth); + int endpoint_bandwidth, EventManager *em); ~Throttle() {} std::string name() diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/network/simple/Throttle.cc --- a/src/mem/ruby/network/simple/Throttle.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/network/simple/Throttle.cc Thu Sep 13 09:59:09 2012 -0500 @@ -49,14 +49,18 @@ static int network_message_to_size(NetworkMessage* net_msg_ptr); Throttle::Throttle(int sID, NodeID node, int link_latency, - int link_bandwidth_multiplier, int endpoint_bandwidth) + int link_bandwidth_multiplier, int endpoint_bandwidth, + EventManager *em) + : Consumer(em) { init(node, link_latency, link_bandwidth_multiplier, endpoint_bandwidth); m_sID = sID; } Throttle::Throttle(NodeID node, int link_latency, - int link_bandwidth_multiplier, int endpoint_bandwidth) + int link_bandwidth_multiplier, int endpoint_bandwidth, + EventManager *em) + : Consumer(em) { init(node, link_latency, link_bandwidth_multiplier, endpoint_bandwidth); m_sID = 0; diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/slicc_interface/AbstractController.cc --- a/src/mem/ruby/slicc_interface/AbstractController.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/slicc_interface/AbstractController.cc Thu Sep 13 09:59:09 2012 -0500 @@ -29,7 +29,8 @@ #include "mem/ruby/slicc_interface/AbstractController.hh" #include "mem/ruby/system/System.hh" -AbstractController::AbstractController(const Params *p) : SimObject(p) +AbstractController::AbstractController(const Params *p) + : SimObject(p), Consumer(this) { p->ruby_system->registerAbstractController(this); } diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/system/AbstractMemOrCache.hh --- a/src/mem/ruby/system/AbstractMemOrCache.hh Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/system/AbstractMemOrCache.hh Thu Sep 13 09:59:09 2012 -0500 @@ -35,7 +35,6 @@ class Consumer; class MemoryNode; -class Message; class AbstractMemOrCache { diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/system/MemoryControl.cc --- a/src/mem/ruby/system/MemoryControl.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/system/MemoryControl.cc Thu Sep 13 09:59:09 2012 -0500 @@ -42,7 +42,8 @@ #include "mem/ruby/system/System.hh" using namespace std; -MemoryControl::MemoryControl(const Params *p) : ClockedObject(p), m_event(this) +MemoryControl::MemoryControl(const Params *p) + : ClockedObject(p), Consumer(this), m_event(this) { g_system_ptr->registerMemController(this); } diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/system/System.hh --- a/src/mem/ruby/system/System.hh Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/system/System.hh Thu Sep 13 09:59:09 2012 -0500 @@ -133,7 +133,6 @@ void init(); - static void printSystemConfig(std::ostream& out); void readCompressedTrace(std::string filename, uint8_t *&raw_data, uint64& uncompressed_trace_size); diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/system/WireBuffer.hh --- a/src/mem/ruby/system/WireBuffer.hh Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/system/WireBuffer.hh Thu Sep 13 09:59:09 2012 -0500 @@ -37,7 +37,7 @@ #include #include "mem/ruby/buffers/MessageBufferNode.hh" -#include "mem/ruby/common/Global.hh" +#include "mem/ruby/common/Consumer.hh" #include "params/RubyWireBuffer.hh" #include "sim/sim_object.hh" @@ -51,7 +51,6 @@ // separated by a network in real systems to simplify coherence. ///////////////////////////////////////////////////////////////////////////// -class Consumer; class Message; class WireBuffer : public SimObject diff -r be1c1059438b -r dd7da7aece0a src/mem/ruby/system/WireBuffer.cc --- a/src/mem/ruby/system/WireBuffer.cc Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/ruby/system/WireBuffer.cc Thu Sep 13 09:59:09 2012 -0500 @@ -38,9 +38,6 @@ using namespace std; -class Consumer; - - // Output operator definition ostream& diff -r be1c1059438b -r dd7da7aece0a src/mem/slicc/ast/FuncCallExprAST.py --- a/src/mem/slicc/ast/FuncCallExprAST.py Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/slicc/ast/FuncCallExprAST.py Thu Sep 13 09:59:09 2012 -0500 @@ -142,7 +142,7 @@ } if (result == TransitionResult_ResourceStall) { - scheduleEvent(this, 1); + scheduleEvent(1); // Cannot do anything with this transition, go check next doable transition (mostly likely of next port) } @@ -173,7 +173,7 @@ } if (result1 == TransitionResult_ResourceStall) { - scheduleEvent(this, 1); + scheduleEvent(1); // Cannot do anything with this transition, go check next // doable transition (mostly likely of next port) } diff -r be1c1059438b -r dd7da7aece0a src/mem/slicc/symbols/StateMachine.py --- a/src/mem/slicc/symbols/StateMachine.py Thu Sep 13 08:02:55 2012 -0400 +++ b/src/mem/slicc/symbols/StateMachine.py Thu Sep 13 09:59:09 2012 -0500 @@ -1047,7 +1047,7 @@ g_system_ptr->getProfiler()->controllerBusy(m_machineID); // Wakeup in another cycle and try again - scheduleEvent(this, 1); + scheduleEvent(1); break; } ''')