summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/simple/Switch.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/ruby/network/simple/Switch.cc')
-rw-r--r--src/mem/ruby/network/simple/Switch.cc18
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);