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.
This commit is contained in:
Steve Reinhardt
2010-07-05 21:39:38 -07:00
parent 345dfd1b41
commit 30ce620d1d
10 changed files with 32 additions and 118 deletions

View 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

View 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:

View 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;

View File

@@ -69,3 +69,8 @@ unserializeAll(const std::string &cpt_dir)
Serializable::unserializeAll(cpt_dir);
}
inline void
startupAll()
{
SimObject::startupAll();
}

View 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')

View 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;

View 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

View 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();

View File

@@ -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;
}
}

View File

@@ -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__