diff -r fd5909432541 -r 07159dd8326a src/base/statistics.hh --- a/src/base/statistics.hh Mon Feb 13 17:42:35 2012 -0600 +++ b/src/base/statistics.hh Mon Feb 13 17:42:37 2012 -0600 @@ -3133,6 +3133,12 @@ */ void registerResetCallback(Callback *cb); +/** + * Register a callback that should be called whenever statistics are + * about to be dumped + */ +void registerDumpCallback(Callback *cb); + std::list &statsList(); } // namespace Stats diff -r fd5909432541 -r 07159dd8326a src/base/statistics.cc --- a/src/base/statistics.cc Mon Feb 13 17:42:35 2012 -0600 +++ b/src/base/statistics.cc Mon Feb 13 17:42:37 2012 -0600 @@ -433,6 +433,7 @@ return root ? root->str() : ""; } +CallbackQueue dumpQueue; CallbackQueue resetQueue; void @@ -441,6 +442,12 @@ resetQueue.add(cb); } +void +registerDumpCallback(Callback *cb) +{ + dumpQueue.add(cb); +} + } // namespace Stats void diff -r fd5909432541 -r 07159dd8326a src/python/m5/stats/__init__.py --- a/src/python/m5/stats/__init__.py Mon Feb 13 17:42:35 2012 -0600 +++ b/src/python/m5/stats/__init__.py Mon Feb 13 17:42:37 2012 -0600 @@ -101,6 +101,8 @@ return lastDump = curTick + internal.stats.processDumpQueue() + prepare() for output in outputList: diff -r fd5909432541 -r 07159dd8326a src/python/swig/stats.i --- a/src/python/swig/stats.i Mon Feb 13 17:42:35 2012 -0600 +++ b/src/python/swig/stats.i Mon Feb 13 17:42:37 2012 -0600 @@ -71,6 +71,13 @@ resetQueue.process(); } +inline void +processDumpQueue() +{ + extern CallbackQueue dumpQueue; + dumpQueue.process(); +} + inline char * PCC(const char *string) { @@ -146,6 +153,7 @@ Tick when = curTick(), Tick repeat = 0); void processResetQueue(); +void processDumpQueue(); std::list &statsList();