X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=schedule.cc;h=e75e7eca7f8bda92295493f8f48bfa1f9056743c;hb=09c3eb5539455e82dcb357fbce82bf5974c3a37c;hp=9f692728aa916d820d3d9c38d80f8c591aee9396;hpb=823b36d82da7eccc91cee959e04f48a3da1c9e13;p=model-checker.git diff --git a/schedule.cc b/schedule.cc index 9f69272..e75e7ec 100644 --- a/schedule.cc +++ b/schedule.cc @@ -7,6 +7,32 @@ #include "model.h" #include "nodestack.h" +/** + * Format an "enabled_type_t" for printing + * @param e The type to format + * @param str The output character array + */ +static void enabled_type_to_string(enabled_type_t e, char *str) +{ + const char *res; + switch (e) { + case THREAD_DISABLED: + res = "disabled"; + break; + case THREAD_ENABLED: + res = "enabled"; + break; + case THREAD_SLEEP_SET: + res = "sleep"; + break; + default: + ASSERT(0); + res = NULL; + break; + } + strcpy(str, res); +} + /** Constructor */ Scheduler::Scheduler() : enabled(NULL), @@ -168,6 +194,7 @@ Thread * Scheduler::next_thread(Thread *t) for (int i = 0; i < enabled_len; i++) { thread_id_t tid = int_to_id(i); if (n->has_priority(tid)) { + DEBUG("Node (tid %d) has priority\n", i); //Have a thread with priority if (enabled[i] != THREAD_DISABLED) have_enabled_thread_with_priority = true; @@ -183,19 +210,22 @@ Thread * Scheduler::next_thread(Thread *t) break; } if (curr_thread_index == old_curr_thread) { - print(); + if (DBG_ENABLED()) + print(); return NULL; } } } else if (t->is_model_thread()) { /* model-checker threads never run */ + ASSERT(false); t = NULL; } else { curr_thread_index = id_to_int(t->get_id()); } current = t; - print(); + if (DBG_ENABLED()) + print(); return t; } @@ -214,8 +244,13 @@ Thread * Scheduler::get_current_thread() const */ void Scheduler::print() const { - if (current) - DEBUG("Current thread: %d\n", id_to_int(current->get_id())); - else - DEBUG("No current thread\n"); + int curr_id = current ? id_to_int(current->get_id()) : -1; + + model_print("Scheduler: "); + for (int i = 0; i < enabled_len; i++) { + char str[20]; + enabled_type_to_string(enabled[i], str); + model_print("[%i: %s%s]", i, i == curr_id ? "current, " : "", str); + } + model_print("\n"); }