From: Gabe Black Date: Thu, 7 Mar 2019 05:37:01 +0000 (-0800) Subject: mem: Track the MemObject owner in MasterPort and SlavePort. X-Git-Tag: v19.0.0.0~1050 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a73069c87dab6d32d5de021d37e009a93cd50cac;p=gem5.git mem: Track the MemObject owner in MasterPort and SlavePort. These types are much more tied to MemObjects and the gem5 memory protocol than the Port or BaseMasterPort and BaseSlavePort classes. Change-Id: I36bc8c75b9c74d28ee8b65dbcbf742cd41135742 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17032 Reviewed-by: Andreas Sandberg Reviewed-by: Nikos Nikoleris Maintainer: Gabe Black --- diff --git a/src/mem/port.cc b/src/mem/port.cc index 47f56e633..ab62ccf1d 100644 --- a/src/mem/port.cc +++ b/src/mem/port.cc @@ -51,8 +51,8 @@ #include "base/trace.hh" #include "mem/mem_object.hh" -Port::Port(const std::string &_name, MemObject& _owner, PortID _id) - : portName(_name), id(_id), owner(_owner) +Port::Port(const std::string &_name, PortID _id) + : portName(_name), id(_id) { } @@ -60,9 +60,8 @@ Port::~Port() { } -BaseMasterPort::BaseMasterPort(const std::string& name, MemObject* owner, - PortID _id) - : Port(name, *owner, _id), _baseSlavePort(NULL) +BaseMasterPort::BaseMasterPort(const std::string &name, PortID _id) + : Port(name, _id), _baseSlavePort(NULL) { } @@ -86,9 +85,8 @@ BaseMasterPort::isConnected() const return _baseSlavePort != NULL; } -BaseSlavePort::BaseSlavePort(const std::string& name, MemObject* owner, - PortID _id) - : Port(name, *owner, _id), _baseMasterPort(NULL) +BaseSlavePort::BaseSlavePort(const std::string &name, PortID _id) + : Port(name, _id), _baseMasterPort(NULL) { } @@ -115,8 +113,8 @@ BaseSlavePort::isConnected() const /** * Master port */ -MasterPort::MasterPort(const std::string& name, MemObject* owner, PortID _id) - : BaseMasterPort(name, owner, _id), _slavePort(NULL) +MasterPort::MasterPort(const std::string& name, MemObject* _owner, PortID _id) + : BaseMasterPort(name, _id), _slavePort(NULL), owner(*_owner) { } @@ -219,8 +217,8 @@ MasterPort::printAddr(Addr a) /** * Slave port */ -SlavePort::SlavePort(const std::string& name, MemObject* owner, PortID id) - : BaseSlavePort(name, owner, id), _masterPort(NULL) +SlavePort::SlavePort(const std::string& name, MemObject* _owner, PortID id) + : BaseSlavePort(name, id), _masterPort(NULL), owner(*_owner) { } diff --git a/src/mem/port.hh b/src/mem/port.hh index 39f6dead8..2c30e31d1 100644 --- a/src/mem/port.hh +++ b/src/mem/port.hh @@ -76,17 +76,13 @@ class Port */ const PortID id; - /** A reference to the MemObject that owns this port. */ - MemObject& owner; - /** * Abstract base class for ports * * @param _name Port name including the owners name - * @param _owner The MemObject that is the structural owner of this port * @param _id A port identifier for vector ports */ - Port(const std::string& _name, MemObject& _owner, PortID _id); + Port(const std::string& _name, PortID _id); /** * Virtual destructor due to inheritance. @@ -119,8 +115,7 @@ class BaseMasterPort : public Port BaseSlavePort* _baseSlavePort; - BaseMasterPort(const std::string& name, MemObject* owner, - PortID id = InvalidPortID); + BaseMasterPort(const std::string& name, PortID id=InvalidPortID); virtual ~BaseMasterPort(); public: @@ -143,8 +138,7 @@ class BaseSlavePort : public Port BaseMasterPort* _baseMasterPort; - BaseSlavePort(const std::string& name, MemObject* owner, - PortID id = InvalidPortID); + BaseSlavePort(const std::string& name, PortID id=InvalidPortID); virtual ~BaseSlavePort(); public: @@ -173,10 +167,14 @@ class MasterPort : public BaseMasterPort SlavePort* _slavePort; + protected: + + MemObject& owner; + public: - MasterPort(const std::string& name, MemObject* owner, - PortID id = InvalidPortID); + MasterPort(const std::string& name, MemObject* _owner, + PortID id=InvalidPortID); virtual ~MasterPort(); /** @@ -350,10 +348,14 @@ class SlavePort : public BaseSlavePort MasterPort* _masterPort; + protected: + + MemObject& owner; + public: - SlavePort(const std::string& name, MemObject* owner, - PortID id = InvalidPortID); + SlavePort(const std::string& name, MemObject* _owner, + PortID id=InvalidPortID); virtual ~SlavePort(); /**