diff options
author | Steve Reinhardt <steve.reinhardt@amd.com> | 2010-07-05 21:39:38 -0700 |
---|---|---|
committer | Steve Reinhardt <steve.reinhardt@amd.com> | 2010-07-05 21:39:38 -0700 |
commit | 30ce620d1d7b04387072e2dcf87530c33eb7c608 (patch) | |
tree | 04d03bbf19ffcec6691b9348b544faf0e5f80992 | |
parent | 345dfd1b41729162ff31da010cce0659ce810897 (diff) | |
download | gem5-30ce620d1d7b04387072e2dcf87530c33eb7c608.tar.xz |
sim: fold StartupCallback into SimObject
There used to be a reason to have StartupCallback
be a separate object, but not any more. Now
it's just confusing.
-rw-r--r-- | src/base/cp_annotate.hh | 1 | ||||
-rw-r--r-- | src/python/m5/simulate.py | 2 | ||||
-rw-r--r-- | src/python/swig/core.i | 3 | ||||
-rw-r--r-- | src/python/swig/pyobject.hh | 5 | ||||
-rw-r--r-- | src/sim/SConscript | 1 | ||||
-rw-r--r-- | src/sim/sim_events.cc | 1 | ||||
-rw-r--r-- | src/sim/sim_object.cc | 19 | ||||
-rw-r--r-- | src/sim/sim_object.hh | 9 | ||||
-rw-r--r-- | src/sim/startup.cc | 66 | ||||
-rw-r--r-- | src/sim/startup.hh | 43 |
10 files changed, 32 insertions, 118 deletions
diff --git a/src/base/cp_annotate.hh b/src/base/cp_annotate.hh index 4248c070a..8ce9995a8 100644 --- a/src/base/cp_annotate.hh +++ b/src/base/cp_annotate.hh @@ -43,7 +43,6 @@ #include "config/cp_annotate.hh" #include "config/the_isa.hh" #include "sim/serialize.hh" -#include "sim/startup.hh" #include "sim/system.hh" #if CP_ANNOTATE diff --git a/src/python/m5/simulate.py b/src/python/m5/simulate.py index 291fdc7b7..e43f90173 100644 --- a/src/python/m5/simulate.py +++ b/src/python/m5/simulate.py @@ -91,7 +91,7 @@ def simulate(*args, **kwargs): global need_resume, need_startup if need_startup: - internal.core.SimStartup() + internal.core.startupAll() need_startup = False for root in need_resume: diff --git a/src/python/swig/core.i b/src/python/swig/core.i index 1ff2d9fe5..f7a075f74 100644 --- a/src/python/swig/core.i +++ b/src/python/swig/core.i @@ -38,7 +38,6 @@ #include "base/socket.hh" #include "base/types.hh" #include "sim/core.hh" -#include "sim/startup.hh" extern const char *compileDate; @@ -62,7 +61,6 @@ inline void disableAllListeners() { ListenSocket::disableAll(); } %include "base/types.hh" void setOutputDir(const std::string &dir); -void SimStartup(); void doExitCleanup(); void disableAllListeners(); @@ -82,6 +80,7 @@ void unserializeAll(const std::string &cpt_dir); void initAll(); void regAllStats(); +void startupAll(); bool want_warn, warn_verbose; bool want_info, info_verbose; diff --git a/src/python/swig/pyobject.hh b/src/python/swig/pyobject.hh index bc3177f6f..01f0fd95e 100644 --- a/src/python/swig/pyobject.hh +++ b/src/python/swig/pyobject.hh @@ -69,3 +69,8 @@ unserializeAll(const std::string &cpt_dir) Serializable::unserializeAll(cpt_dir); } +inline void +startupAll() +{ + SimObject::startupAll(); +} diff --git a/src/sim/SConscript b/src/sim/SConscript index c13ea9909..c91d08c44 100644 --- a/src/sim/SConscript +++ b/src/sim/SConscript @@ -48,7 +48,6 @@ Source('serialize.cc') Source('sim_events.cc') Source('sim_object.cc') Source('simulate.cc') -Source('startup.cc') Source('stat_control.cc') Source('system.cc') diff --git a/src/sim/sim_events.cc b/src/sim/sim_events.cc index a6e3f0af3..490dc93fa 100644 --- a/src/sim/sim_events.cc +++ b/src/sim/sim_events.cc @@ -35,7 +35,6 @@ #include "sim/eventq.hh" #include "sim/sim_events.hh" #include "sim/sim_exit.hh" -#include "sim/startup.hh" #include "sim/stats.hh" using namespace std; diff --git a/src/sim/sim_object.cc b/src/sim/sim_object.cc index c66d766f9..0b18ff437 100644 --- a/src/sim/sim_object.cc +++ b/src/sim/sim_object.cc @@ -73,6 +73,11 @@ SimObject::init() { } +void +SimObject::startup() +{ +} + // // no default statistics, so nothing to do in base implementation // @@ -195,6 +200,20 @@ SimObject::unserializeAll(Checkpoint *cp) } } + +void +SimObject::startupAll() +{ + SimObjectList::iterator i = simObjectList.begin(); + SimObjectList::iterator end = simObjectList.end(); + + while (i != end) { + (*i)->startup(); + ++i; + } +} + + #ifdef DEBUG // // static function: flag which objects should have the debugger break diff --git a/src/sim/sim_object.hh b/src/sim/sim_object.hh index 3a96cf8f6..2bea97301 100644 --- a/src/sim/sim_object.hh +++ b/src/sim/sim_object.hh @@ -45,7 +45,6 @@ #include "params/SimObject.hh" #include "sim/eventq.hh" #include "sim/serialize.hh" -#include "sim/startup.hh" class BaseCPU; class Event; @@ -55,8 +54,7 @@ class Event; * correspond to physical components and can be specified via the * config file (CPUs, caches, etc.). */ -class SimObject - : public EventManager, public Serializable, protected StartupCallback +class SimObject : public EventManager, public Serializable { public: enum State { @@ -103,6 +101,11 @@ class SimObject virtual void regFormulas(); virtual void resetStats(); + // final initialization before simulation + // all state is unserialized so + virtual void startup(); + static void startupAll(); + // static: call reg_stats on all SimObjects static void regAllStats(); diff --git a/src/sim/startup.cc b/src/sim/startup.cc deleted file mode 100644 index 838352107..000000000 --- a/src/sim/startup.cc +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2004-2005 The Regents of The University of Michigan - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: Nathan Binkert - * Kevin Lim - */ - -#include <list> - -#include "base/misc.hh" -#include "sim/debug.hh" -#include "sim/startup.hh" - -typedef std::list<StartupCallback *> startupq_t; - -startupq_t *startupq = NULL; - -StartupCallback::StartupCallback() -{ - if (startupq == NULL) - startupq = new startupq_t; - startupq->push_back(this); -} - -StartupCallback::~StartupCallback() -{ - startupq->remove(this); -} - -void StartupCallback::startup() { } - -void -SimStartup() -{ - startupq_t::iterator i = startupq->begin(); - startupq_t::iterator end = startupq->end(); - - while (i != end) { - (*i)->startup(); - ++i; - } -} diff --git a/src/sim/startup.hh b/src/sim/startup.hh deleted file mode 100644 index cfc4450f4..000000000 --- a/src/sim/startup.hh +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2004-2005 The Regents of The University of Michigan - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: Nathan Binkert - */ - -#ifndef __SIM_STARTUP_HH__ -#define __SIM_STARTUP_HH__ - -struct StartupCallback -{ - StartupCallback(); - virtual ~StartupCallback(); - virtual void startup(); -}; - -void SimStartup(); - -#endif // __SIM_STARTUP_HH__ |