nodestack: print thread status info in Node::print
authorBrian Norris <banorris@uci.edu>
Mon, 4 Mar 2013 03:50:47 +0000 (19:50 -0800)
committerBrian Norris <banorris@uci.edu>
Mon, 4 Mar 2013 05:13:09 +0000 (21:13 -0800)
It's useful to have sleep-set information for debugging.

nodestack.cc
schedule.cc
schedule.h

index 01273479a69ed90919c3b60765fe8a814d2a584b..8ffdc3358073d7be220e1ab27aa2019f83cfced1 100644 (file)
@@ -98,6 +98,16 @@ Node::~Node()
 void Node::print() const
 {
        action->print();
+       model_print("          thread status: ");
+       if (enabled_array) {
+               for (int i = 0; i < num_threads; i++) {
+                       char str[20];
+                       enabled_type_to_string(enabled_array[i], str);
+                       model_print("[%d: %s]", i, str);
+               }
+               model_print("\n");
+       } else
+               model_print("(info not available)\n");
        model_print("          backtrack: %s", backtrack_empty() ? "empty" : "non-empty ");
        for (int i = 0; i < (int)backtrack.size(); i++)
                if (backtrack[i] == true)
index a2eb4cf7254834fecac49905838d53b647b95de5..f65d1e99c2932c1893a9764d6f95c8b2f5faf80a 100644 (file)
@@ -12,7 +12,7 @@
  * @param e The type to format
  * @param str The output character array
  */
-static void enabled_type_to_string(enabled_type_t e, char *str)
+void enabled_type_to_string(enabled_type_t e, char *str)
 {
        const char *res;
        switch (e) {
index c8555b6916d9f9badc8f69d14618ec73de8ffeae..c18953d44824d09782e1cd389becbb96c181fb4c 100644 (file)
@@ -18,6 +18,8 @@ typedef enum enabled_type {
        THREAD_SLEEP_SET
 } enabled_type_t;
 
+void enabled_type_to_string(enabled_type_t e, char *str);
+
 /** @brief The Scheduler class performs the mechanics of Thread execution
  * scheduling. */
 class Scheduler {