X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=mutex.cc;h=145000548be4665f7f8a2cfb4fb657c2ab9a5382;hb=c2d0d0dd1f069749e1ee19e5203af048e0b26f1c;hp=b31b20a8ed2f02446fd1c4fbea5965c65b2b6979;hpb=b3bc21e0aea3e724b129c9e06c75eca68f7b208e;p=model-checker.git diff --git a/mutex.cc b/mutex.cc index b31b20a..1450005 100644 --- a/mutex.cc +++ b/mutex.cc @@ -1,12 +1,16 @@ -#include "mutex.h" -#include "model.h" +#include +#include "model.h" +#include "threads-model.h" +#include "clockvector.h" +#include "action.h" namespace std { -mutex::mutex() : - owner(0), islocked(false) -{ - +mutex::mutex() { + state.islocked=false; + thread_id_t tid=thread_current()->get_id(); + state.alloc_tid=tid; + state.alloc_clock=model->get_cv(tid)->getClock(tid); } void mutex::lock() { @@ -14,8 +18,7 @@ void mutex::lock() { } bool mutex::try_lock() { - model->switch_to_master(new ModelAction(ATOMIC_TRYLOCK, std::memory_order_seq_cst, this)); - return thread_current()->get_return_value(); + return model->switch_to_master(new ModelAction(ATOMIC_TRYLOCK, std::memory_order_seq_cst, this)); } void mutex::unlock() {