changeset e2c43045a81b in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=e2c43045a81b
description:
sim: Automatically unregister probe listeners
The ProbeListener base class automatically registers itself with a
probe manager. Currently, the class does not unregister a itself when
it is destroyed, which makes removing probes listeners somewhat
cumbersome. This patch adds an automatic call to
manager->removeListener in the ProbeListener destructor, which solves
the problem.
diffstat:
src/sim/probe/probe.cc | 8 +++++++-
src/sim/probe/probe.hh | 6 +++++-
2 files changed, 12 insertions(+), 2 deletions(-)
diffs (38 lines):
diff -r c12ec2a0de52 -r e2c43045a81b src/sim/probe/probe.cc
--- a/src/sim/probe/probe.cc Tue Sep 09 04:36:34 2014 -0400
+++ b/src/sim/probe/probe.cc Tue Sep 09 04:36:43 2014 -0400
@@ -62,11 +62,17 @@
listeners.clear();
}
-ProbeListener::ProbeListener(ProbeManager *manager, const std::string &name)
+ProbeListener::ProbeListener(ProbeManager *_manager, const std::string &_name)
+ : manager(_manager), name(_name)
{
manager->addListener(name, *this);
}
+ProbeListener::~ProbeListener()
+{
+ manager->removeListener(name, *this);
+}
+
ProbeListenerObject*
ProbeListenerObjectParams::create()
{
diff -r c12ec2a0de52 -r e2c43045a81b src/sim/probe/probe.hh
--- a/src/sim/probe/probe.hh Tue Sep 09 04:36:34 2014 -0400
+++ b/src/sim/probe/probe.hh Tue Sep 09 04:36:43 2014 -0400
@@ -104,7 +104,11 @@
{
public:
ProbeListener(ProbeManager *manager, const std::string &name);
- virtual ~ProbeListener() {}
+ virtual ~ProbeListener();
+
+ protected:
+ ProbeManager *const manager;
+ const std::string name;
};
/**
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev