From 30ce620d1d7b04387072e2dcf87530c33eb7c608 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Mon, 5 Jul 2010 21:39:38 -0700 Subject: 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. --- src/sim/SConscript | 1 - src/sim/sim_events.cc | 1 - src/sim/sim_object.cc | 19 +++++++++++++++ src/sim/sim_object.hh | 9 ++++--- src/sim/startup.cc | 66 --------------------------------------------------- src/sim/startup.hh | 43 --------------------------------- 6 files changed, 25 insertions(+), 114 deletions(-) delete mode 100644 src/sim/startup.cc delete mode 100644 src/sim/startup.hh (limited to 'src/sim') 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 - -#include "base/misc.hh" -#include "sim/debug.hh" -#include "sim/startup.hh" - -typedef std::list 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__ -- cgit v1.2.3