From: Brian Norris Date: Sat, 6 Oct 2012 01:29:45 +0000 (-0700) Subject: schedule: do not allow model-checker thread to enter scheduler X-Git-Tag: pldi2013~97^2~1^2~7 X-Git-Url: http://demsky.eecs.uci.edu/git/?p=model-checker.git;a=commitdiff_plain;h=8a122ff2e84e0908df91e94f56b123a563592e64 schedule: do not allow model-checker thread to enter scheduler --- diff --git a/schedule.cc b/schedule.cc index cca60eb..dd35237 100644 --- a/schedule.cc +++ b/schedule.cc @@ -48,6 +48,7 @@ bool Scheduler::is_enabled(Thread *t) const void Scheduler::add_thread(Thread *t) { DEBUG("thread %d\n", id_to_int(t->get_id())); + ASSERT(!t->is_model_thread()); set_enabled(t, THREAD_ENABLED); } @@ -79,6 +80,7 @@ void Scheduler::sleep(Thread *t) */ void Scheduler::wake(Thread *t) { + ASSERT(!t->is_model_thread()); set_enabled(t, THREAD_DISABLED); t->set_state(THREAD_READY); } @@ -106,6 +108,9 @@ Thread * Scheduler::next_thread(Thread *t) return NULL; } } + } else if (t->is_model_thread()) { + /* model-checker threads never run */ + t = NULL; } else { curr_thread_index = id_to_int(t->get_id()); } @@ -120,6 +125,7 @@ Thread * Scheduler::next_thread(Thread *t) */ Thread * Scheduler::get_current_thread() const { + ASSERT(!current || !current->is_model_thread()); return current; }