X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmem%2Fxbar.hh;h=f826e142acdab03bcdc2fd5f0af75901b961d7fe;hb=2f4fb22f242b897568d5cbf0e6bc6a77f036f44a;hp=ed678d9d04df09b13f00b3a1a3551792adac73f7;hpb=d35dd71ab4ac44a79ac22dca82277a43cd59f3c6;p=gem5.git diff --git a/src/mem/xbar.hh b/src/mem/xbar.hh index ed678d9d0..f826e142a 100644 --- a/src/mem/xbar.hh +++ b/src/mem/xbar.hh @@ -52,11 +52,12 @@ #define __MEM_XBAR_HH__ #include +#include #include "base/addr_range_map.hh" -#include "base/hashmap.hh" #include "base/types.hh" #include "mem/mem_object.hh" +#include "mem/qport.hh" #include "params/BaseXBar.hh" #include "sim/stats.hh" @@ -113,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 @@ -216,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. @@ -239,7 +237,7 @@ class BaseXBar : public MemObject void releaseLayer(); /** event used to schedule a release of the layer */ - EventWrapper releaseEvent; + EventFunctionWrapper releaseEvent; /** * Stats for occupancy and utilization. These stats capture @@ -329,7 +327,7 @@ class BaseXBar : public MemObject * the underlying Request pointer inside the Packet stays * constant. */ - m5::unordered_map routeTo; + std::unordered_map routeTo; /** all contigous ranges seen by this crossbar */ AddrRangeList xbarRanges; @@ -342,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. @@ -427,7 +425,7 @@ class BaseXBar : public MemObject bool gotAllAddrRanges; /** The master and slave ports of the crossbar */ - std::vector slavePorts; + std::vector slavePorts; std::vector masterPorts; /** Port that handles requests that don't match any of the interfaces.*/ @@ -441,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 @@ -458,6 +454,8 @@ class BaseXBar : public MemObject public: + virtual ~BaseXBar(); + virtual void init(); /** A function used to return the port associated with this object. */ @@ -466,8 +464,6 @@ class BaseXBar : public MemObject BaseSlavePort& getSlavePort(const std::string& if_name, PortID idx = InvalidPortID); - virtual unsigned int drain(DrainManager *dm) = 0; - virtual void regStats(); };