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 <andreas.sandberg@arm.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user