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:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -69,3 +69,8 @@ unserializeAll(const std::string &cpt_dir)
|
||||
Serializable::unserializeAll(cpt_dir);
|
||||
}
|
||||
|
||||
inline void
|
||||
startupAll()
|
||||
{
|
||||
SimObject::startupAll();
|
||||
}
|
||||
|
||||
@@ -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')
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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__
|
||||
Reference in New Issue
Block a user