base: Fix race in PollQueue and remove SIGALRM workaround
[gem5.git] / src / base / debug.hh
index ced6b4f488402130b84e6d8c87228a1795347873..589e8fa427551464c140e501fc0bcac556c47c5f 100644 (file)
@@ -32,6 +32,7 @@
 #ifndef __BASE_DEBUG_HH__
 #define __BASE_DEBUG_HH__
 
+#include <map>
 #include <string>
 #include <vector>
 
@@ -44,6 +45,7 @@ class Flag
   protected:
     const char *_name;
     const char *_desc;
+    std::vector<Flag *> _kids;
 
   public:
     Flag(const char *name, const char *desc);
@@ -51,6 +53,7 @@ class Flag
 
     std::string name() const { return _name; }
     std::string desc() const { return _desc; }
+    std::vector<Flag *> kids() { return _kids; }
 
     virtual void enable() = 0;
     virtual void disable() = 0;
@@ -77,7 +80,12 @@ class SimpleFlag : public Flag
 class CompoundFlag : public SimpleFlag
 {
   protected:
-    std::vector<Flag *> flags;
+    void
+    addFlag(Flag &f)
+    {
+        if (&f != NULL)
+            _kids.push_back(&f);
+    }
 
   public:
     CompoundFlag(const char *name, const char *desc,
@@ -99,17 +107,23 @@ class CompoundFlag : public SimpleFlag
         addFlag(f15); addFlag(f16); addFlag(f17); addFlag(f18); addFlag(f19);
     }
 
-    void
-    addFlag(Flag &f)
-    {
-        if (&f != NULL)
-            flags.push_back(&f);
-    }
-
     void enable();
     void disable();
 };
 
+typedef std::map<std::string, Flag *> FlagsMap;
+FlagsMap &allFlags();
+
+Flag *findFlag(const std::string &name);
+
+bool changeFlag(const char *s, bool value);
+
 } // namespace Debug
 
+void setDebugFlag(const char *string);
+
+void clearDebugFlag(const char *string);
+
+void dumpDebugFlags();
+
 #endif // __BASE_DEBUG_HH__