summaryrefslogtreecommitdiff
path: root/src/base/debug.cc
diff options
context:
space:
mode:
authorCurtis Dunham <Curtis.Dunham@arm.com>2015-09-30 15:21:55 -0500
committerCurtis Dunham <Curtis.Dunham@arm.com>2015-09-30 15:21:55 -0500
commit02881a7bf3e5a5920d258d13ed0aed282f252f07 (patch)
tree73b16a32bbfc03c789d75c35d951b108cae98a94 /src/base/debug.cc
parentccf4f6c3d7616c546d78eb21d22ebda812b5e2bb (diff)
downloadgem5-02881a7bf3e5a5920d258d13ed0aed282f252f07.tar.xz
base: remove Trace::enabled flag
The DTRACE() macro tests both Trace::enabled and the specific flag. This change uses the same administrative interface for enabling/disabling tracing, but masks the SimpleFlags settings directly. This eliminates a load for every DTRACE() test, e.g. DPRINTF.
Diffstat (limited to 'src/base/debug.cc')
-rw-r--r--src/base/debug.cc26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/base/debug.cc b/src/base/debug.cc
index 2780344a4..6161c9e82 100644
--- a/src/base/debug.cc
+++ b/src/base/debug.cc
@@ -68,6 +68,8 @@ allFlags()
return flags;
}
+bool SimpleFlag::_active = false;
+
Flag *
findFlag(const std::string &name)
{
@@ -95,17 +97,33 @@ Flag::~Flag()
}
void
+SimpleFlag::enableAll()
+{
+ _active = true;
+ for (auto& i : allFlags())
+ i.second->sync();
+}
+
+void
+SimpleFlag::disableAll()
+{
+ _active = false;
+ for (auto& i : allFlags())
+ i.second->sync();
+}
+
+void
CompoundFlag::enable()
{
- SimpleFlag::enable();
- for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::enable));
+ for (auto& k : _kids)
+ k->enable();
}
void
CompoundFlag::disable()
{
- SimpleFlag::disable();
- for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::disable));
+ for (auto& k : _kids)
+ k->disable();
}
struct AllFlags : public Flag