sim: fold StartupCallback into SimObject
authorSteve Reinhardt <steve.reinhardt@amd.com>
Tue, 6 Jul 2010 04:39:38 +0000 (21:39 -0700)
committerSteve Reinhardt <steve.reinhardt@amd.com>
Tue, 6 Jul 2010 04:39:38 +0000 (21:39 -0700)
There used to be a reason to have StartupCallback
be a separate object, but not any more.  Now
it's just confusing.

src/base/cp_annotate.hh
src/python/m5/simulate.py
src/python/swig/core.i
src/python/swig/pyobject.hh
src/sim/SConscript
src/sim/sim_events.cc
src/sim/sim_object.cc
src/sim/sim_object.hh
src/sim/startup.cc [deleted file]
src/sim/startup.hh [deleted file]

index 4248c070a63a8261ce80e866c6d48bcb80d70e96..8ce9995a8574539b028c0509b33e3f7d30a95c0f 100644 (file)
@@ -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
index 291fdc7b7930e1de1e3a55312a0856b267641f91..e43f90173e46291748f541be585e8a868ef2f7e6 100644 (file)
@@ -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:
index 1ff2d9fe5ab0c3adbe967c43620d957c1a7e63af..f7a075f74e5960bf3e3ce7a480a5e18e9ecacbb1 100644 (file)
@@ -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;
index bc3177f6f70c7a11f3c583b60b248578b78693f4..01f0fd95ec1abd01458b2f85072e73f6afc11033 100644 (file)
@@ -69,3 +69,8 @@ unserializeAll(const std::string &cpt_dir)
     Serializable::unserializeAll(cpt_dir);
 }
 
+inline void
+startupAll()
+{
+    SimObject::startupAll();
+}
index c13ea9909fe698517a572f18b1bcb7a8334c07af..c91d08c44ddee4dcbcb90474e286981375d3ca6a 100644 (file)
@@ -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')
 
index a6e3f0af3bdf8f5ff7a32b4b9c100d802fd91d6d..490dc93fa1614b9a2df84fd1efefd8e8fcb33731 100644 (file)
@@ -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;
index c66d766f900630c9c37410d7d2b6173b8f1c3fc8..0b18ff437b57c9e846bf53be13441be3d7922c73 100644 (file)
@@ -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
index 3a96cf8f6fc58edb36a5e0ed84939c12806f72cf..2bea97301d62a2b14b3fa005a76e7dfc09218294 100644 (file)
@@ -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 (file)
index 8383521..0000000
+++ /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 (file)
index cfc4450..0000000
+++ /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__