mem: Co-ordination of CMOs in the xbar
[gem5.git] / src / mem / xbar.hh
index 547e138e9101e9294c1485688896f491739086e9..f826e142acdab03bcdc2fd5f0af75901b961d7fe 100644 (file)
@@ -52,9 +52,9 @@
 #define __MEM_XBAR_HH__
 
 #include <deque>
+#include <unordered_map>
 
 #include "base/addr_range_map.hh"
-#include "base/hashmap.hh"
 #include "base/types.hh"
 #include "mem/mem_object.hh"
 #include "mem/qport.hh"
@@ -114,7 +114,7 @@ class BaseXBar : public MemObject
          *
          * @return 1 if busy or waiting to retry, or 0 if idle
          */
-        unsigned int drain(DrainManager *dm);
+        DrainState drain() override;
 
         /**
          * Get the crossbar layer's name
@@ -217,9 +217,6 @@ class BaseXBar : public MemObject
         /** track the state of the layer */
         State state;
 
-        /** manager to signal when drained */
-        DrainManager *drainManager;
-
         /**
          * A deque of ports that retry should be called on because
          * the original send was delayed due to a busy layer.
@@ -240,7 +237,7 @@ class BaseXBar : public MemObject
         void releaseLayer();
 
         /** event used to schedule a release of the layer */
-        EventWrapper<Layer, &Layer::releaseLayer> releaseEvent;
+        EventFunctionWrapper releaseEvent;
 
         /**
          * Stats for occupancy and utilization. These stats capture
@@ -330,7 +327,7 @@ class BaseXBar : public MemObject
      * the underlying Request pointer inside the Packet stays
      * constant.
      */
-    m5::unordered_map<RequestPtr, PortID> routeTo;
+    std::unordered_map<RequestPtr, PortID> routeTo;
 
     /** all contigous ranges seen by this crossbar */
     AddrRangeList xbarRanges;
@@ -343,7 +340,7 @@ class BaseXBar : public MemObject
      *
      * @param master_port_id id of the port that received the change
      */
-    void recvRangeChange(PortID master_port_id);
+    virtual void recvRangeChange(PortID master_port_id);
 
     /** Find which port connected to this crossbar (if any) should be
      * given a packet with this address.
@@ -442,8 +439,6 @@ class BaseXBar : public MemObject
 
     BaseXBar(const BaseXBarParams *p);
 
-    virtual ~BaseXBar();
-
     /**
      * Stats for transaction distribution and data passing through the
      * crossbar. The transaction distribution is globally counting
@@ -459,6 +454,8 @@ class BaseXBar : public MemObject
 
   public:
 
+    virtual ~BaseXBar();
+
     virtual void init();
 
     /** A function used to return the port associated with this object. */