ruby: reverts to changeset: bf82f1f7b040
[gem5.git] / src / mem / ruby / network / simple / Throttle.hh
index d978f14fd782fa5c6c9017a717698865e6b02a0a..85bf9691ad5c6521ce13bdd101f36839addc18a7 100644 (file)
@@ -43,7 +43,6 @@
 #include <vector>
 
 #include "mem/ruby/common/Consumer.hh"
-#include "mem/ruby/common/Global.hh"
 #include "mem/ruby/network/Network.hh"
 #include "mem/ruby/system/System.hh"
 
@@ -52,18 +51,19 @@ class MessageBuffer;
 class Throttle : public Consumer
 {
   public:
-    Throttle(int sID, NodeID node, Cycles link_latency,
+    Throttle(int sID, RubySystem *rs, NodeID node, Cycles link_latency,
+             int link_bandwidth_multiplier, int endpoint_bandwidth,
+             ClockedObject *em);
+    Throttle(RubySystem *rs, NodeID node, Cycles link_latency,
              int link_bandwidth_multiplier, int endpoint_bandwidth,
              ClockedObject *em);
-    Throttle(NodeID node, Cycles link_latency, int link_bandwidth_multiplier,
-             int endpoint_bandwidth, ClockedObject *em);
     ~Throttle() {}
 
     std::string name()
     { return csprintf("Throttle-%i", m_sID); }
 
-    void addLinks(const std::map<int, MessageBuffer*>& in_vec,
-                  const std::map<int, MessageBuffer*>& out_vec);
+    void addLinks(const std::vector<MessageBuffer*>& in_vec,
+                  const std::vector<MessageBuffer*>& out_vec);
     void wakeup();
 
     // The average utilization (a fraction) since last clearStats()
@@ -92,9 +92,10 @@ class Throttle : public Consumer
     Throttle(const Throttle& obj);
     Throttle& operator=(const Throttle& obj);
 
-    std::map<int, MessageBuffer*> m_in;
-    std::map<int, MessageBuffer*> m_out;
-    std::map<int, int> m_units_remaining;
+    std::vector<MessageBuffer*> m_in;
+    std::vector<MessageBuffer*> m_out;
+    unsigned int m_vnets;
+    std::vector<int> m_units_remaining;
 
     int m_sID;
     NodeID m_node;
@@ -102,6 +103,7 @@ class Throttle : public Consumer
     Cycles m_link_latency;
     int m_wakeups_wo_switch;
     int m_endpoint_bandwidth;
+    RubySystem *m_ruby_system;
 
     // Statistical variables
     Stats::Scalar m_link_utilization;