summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Reinhardt <steve.reinhardt@amd.com>2010-07-05 21:39:38 -0700
committerSteve Reinhardt <steve.reinhardt@amd.com>2010-07-05 21:39:38 -0700
commit30ce620d1d7b04387072e2dcf87530c33eb7c608 (patch)
tree04d03bbf19ffcec6691b9348b544faf0e5f80992
parent345dfd1b41729162ff31da010cce0659ce810897 (diff)
downloadgem5-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.hh1
-rw-r--r--src/python/m5/simulate.py2
-rw-r--r--src/python/swig/core.i3
-rw-r--r--src/python/swig/pyobject.hh5
-rw-r--r--src/sim/SConscript1
-rw-r--r--src/sim/sim_events.cc1
-rw-r--r--src/sim/sim_object.cc19
-rw-r--r--src/sim/sim_object.hh9
-rw-r--r--src/sim/startup.cc66
-rw-r--r--src/sim/startup.hh43
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__