summaryrefslogtreecommitdiff
path: root/src/python/m5/params.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/python/m5/params.py')
-rw-r--r--src/python/m5/params.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/python/m5/params.py b/src/python/m5/params.py
index 95958e3e6..0a369e641 100644
--- a/src/python/m5/params.py
+++ b/src/python/m5/params.py
@@ -1349,6 +1349,11 @@ class PortRef(object):
def __str__(self):
return '%s.%s' % (self.simobj, self.name)
+ def __len__(self):
+ # Return the number of connected ports, i.e. 0 is we have no
+ # peer and 1 if we do.
+ return int(self.peer != None)
+
# for config.ini, print peer's name (not ours)
def ini_str(self):
return str(self.peer)
@@ -1462,6 +1467,11 @@ class VectorPortRef(object):
def __str__(self):
return '%s.%s[:]' % (self.simobj, self.name)
+ def __len__(self):
+ # Return the number of connected peers, corresponding the the
+ # length of the elements.
+ return len(self.elements)
+
# for config.ini, print peer's name (not ours)
def ini_str(self):
return ' '.join([el.ini_str() for el in self.elements])
@@ -1525,6 +1535,17 @@ class Port(object):
def connect(self, simobj, ref):
self.makeRef(simobj).connect(ref)
+ # No need for any pre-declarations at the moment as we merely rely
+ # on an unsigned int.
+ def cxx_predecls(self, code):
+ pass
+
+ # Declare an unsigned int with the same name as the port, that
+ # will eventually hold the number of connected ports (and thus the
+ # number of elements for a VectorPort).
+ def cxx_decl(self, code):
+ code('unsigned int port_${{self.name}}_connection_count;')
+
class MasterPort(Port):
# MasterPort("description")
def __init__(self, *args):