diff options
Diffstat (limited to 'src/mem/ruby/network/simple/Switch.cc')
-rw-r--r-- | src/mem/ruby/network/simple/Switch.cc | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/mem/ruby/network/simple/Switch.cc b/src/mem/ruby/network/simple/Switch.cc index e028de02a..416a222bb 100644 --- a/src/mem/ruby/network/simple/Switch.cc +++ b/src/mem/ruby/network/simple/Switch.cc @@ -64,17 +64,19 @@ Switch::init() } void -Switch::addInPort(const map<int, MessageBuffer*>& in) +Switch::addInPort(const vector<MessageBuffer*>& in) { m_perfect_switch->addInPort(in); for (auto& it : in) { - it.second->setReceiver(this); + if (it != nullptr) { + it->setReceiver(this); + } } } void -Switch::addOutPort(const map<int, MessageBuffer*>& out, +Switch::addOutPort(const vector<MessageBuffer*>& out, const NetDest& routing_table_entry, Cycles link_latency, int bw_multiplier) { @@ -87,10 +89,12 @@ Switch::addOutPort(const map<int, MessageBuffer*>& out, m_throttles.push_back(throttle_ptr); // Create one buffer per vnet (these are intermediaryQueues) - map<int, MessageBuffer*> intermediateBuffers; + vector<MessageBuffer*> intermediateBuffers; - for (auto& it : out) { - it.second->setSender(this); + for (int i = 0; i < out.size(); ++i) { + if (out[i] != nullptr) { + out[i]->setSender(this); + } MessageBuffer* buffer_ptr = new MessageBuffer; // Make these queues ordered @@ -99,7 +103,7 @@ Switch::addOutPort(const map<int, MessageBuffer*>& out, buffer_ptr->resize(m_network_ptr->getBufferSize()); } - intermediateBuffers[it.first] = buffer_ptr; + intermediateBuffers.push_back(buffer_ptr); m_buffers_to_free.push_back(buffer_ptr); buffer_ptr->setSender(this); |