X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=blobdiff_plain;f=promise.cc;h=68290eecefac6c7ed72673e01a941e9f0afda3be;hp=cbd45c2ffcf96f5398c49b29c4fdc2ef169c9b61;hb=507434b53b00f7d32301050dd0ce8466ad42677b;hpb=f9772fc7b25c7c632e51e0888599f0063bc40d60 diff --git a/promise.cc b/promise.cc index cbd45c2..68290ee 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]) && ( (int)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; }