python: Add the ability to check if a debug flag has been enabled
authorAndreas Sandberg <andreas.sandberg@arm.com>
Fri, 4 Sep 2020 16:12:27 +0000 (17:12 +0100)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Mon, 7 Sep 2020 08:42:07 +0000 (08:42 +0000)
There is currently no Python API to check if a debug flag is
enabled. Add a new status property that can be read or set to control
the status of a flag. The stat of a flag can also be queried by
converting it to a bool.

For example:

  m5.debug.flags["XBar"].status = True

  if m5.debug.flags["XBar"]:
      print("XBar debugging is on")

Change-Id: I5a50c39ced182ab44e18c061c463d7d9c41ef186
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/34119
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/python/pybind11/debug.cc

index ed2942bc7ad241041a975f0aba18539d77612817..69c497c1d5fd9cfa9e91b7d0989ae1129f566a37 100644 (file)
@@ -98,6 +98,20 @@ pybind_init_debug(py::module &m_native)
         .def_property_readonly("desc", &Debug::Flag::desc)
         .def("enable", &Debug::Flag::enable)
         .def("disable", &Debug::Flag::disable)
+        .def_property("status",
+                      [](const Debug::Flag *flag) {
+                          return flag->status();
+                      },
+                      [](Debug::Flag *flag, bool state) {
+                          if (state) {
+                              flag->enable();
+                          } else {
+                              flag->disable();
+                          }
+                      })
+        .def("__bool__", [](const Debug::Flag *flag) {
+                return flag->status();
+            })
         ;
 
     py::class_<Debug::SimpleFlag>(m_debug, "SimpleFlag", c_flag);