clear the function profile on a stats reset
authorNathan Binkert <binkertn@umich.edu>
Sun, 20 Nov 2005 23:33:17 +0000 (18:33 -0500)
committerNathan Binkert <binkertn@umich.edu>
Sun, 20 Nov 2005 23:33:17 +0000 (18:33 -0500)
cpu/profile.hh:
    Add a placeholder for a reset callback

--HG--
extra : convert_revision : 7fa13e5d04daf1cf93eb35c8fdaf67a40ce3ef73

cpu/profile.cc
cpu/profile.hh

index f4aa81c2b72b32b2132371dafc078704efbdc6b6..1a38792a054027226f15921861acc55436b24013 100644 (file)
@@ -29,6 +29,8 @@
 #include <string>
 
 #include "base/bitfield.hh"
+#include "base/callback.hh"
+#include "base/statistics.hh"
 #include "base/trace.hh"
 #include "cpu/base.hh"
 #include "cpu/exec_context.hh"
@@ -80,12 +82,16 @@ ProfileNode::clear()
 }
 
 FunctionProfile::FunctionProfile(const SymbolTable *_symtab)
-    : symtab(_symtab)
+    : reset(0), symtab(_symtab)
 {
+    reset = new MakeCallback<FunctionProfile, &FunctionProfile::clear>(this);
+    Stats::registerResetCallback(reset);
 }
 
 FunctionProfile::~FunctionProfile()
 {
+    if (reset)
+        delete reset;
 }
 
 ProfileNode *
index b7526ab6a7288fe8528ce99ffd0e52154079e1ea..58cd7e79fa14ef5d09084df37f65abaecd17c20e 100644 (file)
@@ -54,9 +54,11 @@ class ProfileNode
     void clear();
 };
 
+class Callback;
 class FunctionProfile
 {
   private:
+    Callback *reset;
     const SymbolTable *symtab;
     ProfileNode top;
     std::map<Addr, Counter> pc_count;