summaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
Diffstat (limited to 'sim')
-rw-r--r--sim/sim_object.cc30
-rw-r--r--sim/sim_object.hh4
2 files changed, 31 insertions, 3 deletions
diff --git a/sim/sim_object.cc b/sim/sim_object.cc
index af6a258ff..5c8e3eb9b 100644
--- a/sim/sim_object.cc
+++ b/sim/sim_object.cc
@@ -28,12 +28,13 @@
#include <assert.h>
-#include "sim/sim_object.hh"
+#include "base/callback.hh"
#include "base/inifile.hh"
-#include "sim/configfile.hh"
-#include "sim/host.hh"
#include "base/misc.hh"
#include "base/trace.hh"
+#include "sim/configfile.hh"
+#include "sim/host.hh"
+#include "sim/sim_object.hh"
#include "sim/sim_stats.hh"
using namespace std;
@@ -72,6 +73,21 @@ SimObject::regFormulas()
{
}
+namespace {
+ class __SimObjectResetCB : public Callback
+ {
+ public:
+ __SimObjectResetCB() { Statistics::RegResetCallback(this); }
+ virtual void process() { SimObject::resetAllStats(); }
+ };
+ __SimObjectResetCB __theSimObjectResetCB;
+}
+
+void
+SimObject::resetStats()
+{
+}
+
//
// no default extra output
//
@@ -110,6 +126,14 @@ SimObject::regAllStats()
}
//
+// static function: call resetStats() on all SimObjects.
+//
+void
+SimObject::resetAllStats()
+{
+}
+
+//
// static function: call printExtraOutput() on all SimObjects.
//
void
diff --git a/sim/sim_object.hh b/sim/sim_object.hh
index 1a365651b..6b26a1cb0 100644
--- a/sim/sim_object.hh
+++ b/sim/sim_object.hh
@@ -68,6 +68,7 @@ class SimObject : public Serializeable
// register statistics for this object
virtual void regStats();
virtual void regFormulas();
+ virtual void resetStats();
// print extra results for this object not covered by registered
// statistics (called at end of simulation)
@@ -76,6 +77,9 @@ class SimObject : public Serializeable
// static: call reg_stats on all SimObjects
static void regAllStats();
+ // static: call resetStats on all SimObjects
+ static void resetAllStats();
+
// static: call printExtraOutput on all SimObjects
static void printAllExtraOutput(std::ostream&);
};