summaryrefslogtreecommitdiff
path: root/src/mem/ruby/network/Network.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/ruby/network/Network.hh')
-rw-r--r--src/mem/ruby/network/Network.hh26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/mem/ruby/network/Network.hh b/src/mem/ruby/network/Network.hh
index 400972020..33a3fc33f 100644
--- a/src/mem/ruby/network/Network.hh
+++ b/src/mem/ruby/network/Network.hh
@@ -88,8 +88,7 @@ class Network : public ClockedObject
LinkDirection direction,
const NetDest& routing_table_entry) = 0;
- virtual void printStats(std::ostream& out) const = 0;
- virtual void clearStats() = 0;
+ virtual void collateStats() = 0;
virtual void print(std::ostream& out) const = 0;
/*
@@ -107,13 +106,30 @@ class Network : public ClockedObject
Network(const Network& obj);
Network& operator=(const Network& obj);
- protected:
- const std::string m_name;
- int m_nodes;
+ uint32_t m_nodes;
static uint32_t m_virtual_networks;
Topology* m_topology_ptr;
static uint32_t m_control_msg_size;
static uint32_t m_data_msg_size;
+
+ private:
+ //! Callback class used for collating statistics from all the
+ //! controller of this type.
+ class StatsCallback : public Callback
+ {
+ private:
+ Network *ctr;
+
+ public:
+ virtual ~StatsCallback() {}
+
+ StatsCallback(Network *_ctr)
+ : ctr(_ctr)
+ {
+ }
+
+ void process() {ctr->collateStats();}
+ };
};
inline std::ostream&