sim: Add a getPort function to SimObject.
This will retrieve a Port object from a given SimObject (which might not be a MemObject) no matter what flavor of Port it is. Change-Id: I636b85e9d4929a05a769e165849106bcb5f3e9c1 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17037 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
@@ -1642,6 +1642,10 @@ class SimObject(object):
|
||||
def getValue(self):
|
||||
return self.getCCObject()
|
||||
|
||||
@cxxMethod(return_value_policy="reference")
|
||||
def getPort(self, if_name, idx):
|
||||
pass
|
||||
|
||||
# Create C++ port connections corresponding to the connections in
|
||||
# _port_refs
|
||||
def connectPorts(self):
|
||||
|
||||
@@ -133,6 +133,12 @@ SimObject::getProbeManager()
|
||||
return probeManager;
|
||||
}
|
||||
|
||||
Port &
|
||||
SimObject::getPort(const std::string &if_name, PortID idx)
|
||||
{
|
||||
fatal("%s does not have any port named %s\n", name(), if_name);
|
||||
}
|
||||
|
||||
//
|
||||
// static function: serialize all SimObjects.
|
||||
//
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#include "sim/drain.hh"
|
||||
#include "sim/eventq.hh"
|
||||
#include "sim/eventq_impl.hh"
|
||||
#include "sim/port.hh"
|
||||
#include "sim/serialize.hh"
|
||||
|
||||
class EventManager;
|
||||
@@ -169,6 +170,18 @@ class SimObject : public EventManager, public Serializable, public Drainable
|
||||
*/
|
||||
ProbeManager *getProbeManager();
|
||||
|
||||
/**
|
||||
* Get a port with a given name and index. This is used at binding time
|
||||
* and returns a reference to a protocol-agnostic port.
|
||||
*
|
||||
* @param if_name Port name
|
||||
* @param idx Index in the case of a VectorPort
|
||||
*
|
||||
* @return A reference to the given port
|
||||
*/
|
||||
virtual Port &getPort(const std::string &if_name,
|
||||
PortID idx=InvalidPortID);
|
||||
|
||||
/**
|
||||
* startup() is the final initialization call before simulation.
|
||||
* All state is initialized (including unserialized state, if any,
|
||||
|
||||
Reference in New Issue
Block a user