X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=promise.cc;h=59fb9ee43115cd81ed60b2487ffbb563e90bd6da;hb=202542965363285e68bb33654a62fe816c69b176;hp=cbd45c2ffcf96f5398c49b29c4fdc2ef169c9b61;hpb=e8e32b7efa96a0b36c1475b58368d002408a7ea7;p=model-checker.git diff --git a/promise.cc b/promise.cc index cbd45c2..59fb9ee 100644 --- a/promise.cc +++ b/promise.cc @@ -13,9 +13,22 @@ bool Promise::increment_threads(thread_id_t tid) { 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]) && ( i != promise_tid ) && (enabled[i] != THREAD_DISABLED)) { return false; + } + } + return true; +} + +bool Promise::check_promise() { + enabled_type_t * enabled=model->get_scheduler()->get_enabled(); + unsigned int sync_size=synced_thread.size(); + for(unsigned int i=1;iget_num_threads();i++) { + if ((i >= sync_size || !synced_thread[i]) && (enabled[i] != THREAD_DISABLED)) { + return false; + } } return true; }