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 gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev