X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=promise.cc;h=90591eb60249693d773c534dfbaedf96c4117521;hb=87d6ae25425840ccad0ef6edef6e279967e83be6;hp=cbd45c2ffcf96f5398c49b29c4fdc2ef169c9b61;hpb=f9772fc7b25c7c632e51e0888599f0063bc40d60;p=model-checker.git diff --git a/promise.cc b/promise.cc index cbd45c2..90591eb 100644 --- a/promise.cc +++ b/promise.cc @@ -11,11 +11,22 @@ bool Promise::increment_threads(thread_id_t tid) { return false; synced_thread[id]=true; - enabled_type_t * enabled=model->get_scheduler()->get_enabled(); unsigned int sync_size=synced_thread.size(); - for(unsigned int i=0;iget_num_threads();i++) { - if ((i >= sync_size || !synced_thread[i]) && (enabled[i] != THREAD_DISABLED)) + int promise_tid=id_to_int(read->get_tid()); + for(unsigned int i=1;iget_num_threads();i++) { + if ((i >= sync_size || !synced_thread[i]) && ( (int)i != promise_tid ) && model->is_enabled(int_to_id(i))) { return false; + } + } + return true; +} + +bool Promise::check_promise() { + unsigned int sync_size=synced_thread.size(); + for(unsigned int i=1;iget_num_threads();i++) { + if ((i >= sync_size || !synced_thread[i]) && model->is_enabled(int_to_id(i))) { + return false; + } } return true; }