From 38da461fd79bcfd3eed683076f1ba40465af775e Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Mon, 15 Aug 2005 16:12:19 -0400 Subject: Fix NextEthernetAddr python/m5/config.py: NextEthernetAddr shouldnt' be a Singleton since we want __init__ to be called more than once. Make the EthernetAddr class a "proxy" so that unproxy will be called and NextEthernetAddr will generally work correctly. --HG-- extra : convert_revision : c89bf268e805e202ae71030fcea4833867c7e477 --- python/m5/config.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'python/m5') diff --git a/python/m5/config.py b/python/m5/config.py index a281feccc..3c49421d3 100644 --- a/python/m5/config.py +++ b/python/m5/config.py @@ -417,6 +417,9 @@ class SimObject(object): found_obj = match_obj return found_obj, found_obj != None + def unproxy(self, base): + return self + def print_ini(self): print '[' + self.path() + ']' # .ini section header @@ -632,7 +635,7 @@ class AnyProxy(BaseProxy): return 'any' def isproxy(obj): - if isinstance(obj, BaseProxy): + if isinstance(obj, (BaseProxy, EthernetAddr)): return True elif isinstance(obj, (list, tuple)): for v in obj: @@ -980,12 +983,11 @@ def IncEthernetAddr(addr, val = 1): return ':'.join(map(lambda x: '%02x' % x, bytes)) class NextEthernetAddr(object): - __metaclass__ = Singleton addr = "00:90:00:00:00:01" def __init__(self, inc = 1): - self.value = self.addr - self.addr = IncEthernetAddr(self.addr, inc) + self.value = NextEthernetAddr.addr + NextEthernetAddr.addr = IncEthernetAddr(NextEthernetAddr.addr, inc) class EthernetAddr(ParamValue): def __init__(self, value): @@ -1006,10 +1008,16 @@ class EthernetAddr(ParamValue): self.value = value + def unproxy(self, base): + if self.value == NextEthernetAddr: + self.addr = self.value().value + return self + def __str__(self): if self.value == NextEthernetAddr: - self.value = self.value().value - return self.value + return self.addr + else: + return self.value # Special class for NULL pointers. Note the special check in # make_param_value() above that lets these be assigned where a @@ -1027,7 +1035,7 @@ class NullSimObject(object): def ini_str(self): return 'Null' - def unproxy(self,base): + def unproxy(self, base): return self def set_path(self, parent, name): -- cgit v1.2.3