summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/ruby/network/MessageBuffer.cc10
-rw-r--r--src/mem/ruby/network/MessageBuffer.hh6
2 files changed, 13 insertions, 3 deletions
diff --git a/src/mem/ruby/network/MessageBuffer.cc b/src/mem/ruby/network/MessageBuffer.cc
index b78e9aad0..557e0e80e 100644
--- a/src/mem/ruby/network/MessageBuffer.cc
+++ b/src/mem/ruby/network/MessageBuffer.cc
@@ -51,7 +51,6 @@ MessageBuffer::MessageBuffer(const Params *p)
m_size_last_time_size_checked = 0;
m_size_at_cycle_start = 0;
m_msgs_this_cycle = 0;
- m_not_avail_count = 0;
m_priority_rank = 0;
m_stall_msg_map.clear();
@@ -350,6 +349,15 @@ MessageBuffer::isReady(Tick current_time) const
(m_prio_heap.front()->getLastEnqueueTime() <= current_time));
}
+void
+MessageBuffer::regStats()
+{
+ m_not_avail_count
+ .name(name() + ".not_avail_count")
+ .desc("Number of times this buffer did not have N slots available")
+ .flags(Stats::nozero);
+}
+
uint32_t
MessageBuffer::functionalWrite(Packet *pkt)
{
diff --git a/src/mem/ruby/network/MessageBuffer.hh b/src/mem/ruby/network/MessageBuffer.hh
index 5c9e1089b..2a82887cd 100644
--- a/src/mem/ruby/network/MessageBuffer.hh
+++ b/src/mem/ruby/network/MessageBuffer.hh
@@ -116,6 +116,8 @@ class MessageBuffer : public SimObject
void setIncomingLink(int link_id) { m_input_link_id = link_id; }
void setVnet(int net) { m_vnet_id = net; }
+ void regStats();
+
// Function for figuring out if any of the messages in the buffer need
// to be updated with the data from the packet.
// Return value indicates the number of messages that were updated.
@@ -150,8 +152,8 @@ class MessageBuffer : public SimObject
unsigned int m_size_at_cycle_start;
unsigned int m_msgs_this_cycle;
- int m_not_avail_count; // count the # of times I didn't have N
- // slots available
+ Stats::Scalar m_not_avail_count; // count the # of times I didn't have N
+ // slots available
uint64_t m_msg_counter;
int m_priority_rank;
const bool m_strict_fifo;