X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=mutex.cc;h=0776db8eef5857b34c47bdbf3493194c9672097a;hb=57748ff26d916528ba0df0b1d2c699a901386d5f;hp=7fa0b589c8a4535a276c7f8f95eda76782bff554;hpb=b35625b0499717b3caab5344d7278a31fbee9cb6;p=c11tester.git diff --git a/mutex.cc b/mutex.cc index 7fa0b589..0776db8e 100644 --- a/mutex.cc +++ b/mutex.cc @@ -1,27 +1,35 @@ -#include +#include "mutex.h" #include "model.h" +#include "execution.h" #include "threads-model.h" #include "clockvector.h" +#include "action.h" -namespace std { -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); +namespace cdsc { + +mutex::mutex() +{ + state.locked = NULL; + thread_id_t tid = thread_current()->get_id(); + state.alloc_tid = tid; + ClockVector *cv = model->get_execution()->get_cv(tid); + state.alloc_clock = cv == NULL ? 0 : cv->getClock(tid); } - -void mutex::lock() { - model->switch_to_master(new ModelAction(ATOMIC_LOCK, std::memory_order_seq_cst, this)); + +void mutex::lock() +{ + model->switch_to_master(new ModelAction(ATOMIC_LOCK, std::memory_order_seq_cst, this)); } - -bool mutex::try_lock() { - return model->switch_to_master(new ModelAction(ATOMIC_TRYLOCK, std::memory_order_seq_cst, this)); + +bool mutex::try_lock() +{ + return model->switch_to_master(new ModelAction(ATOMIC_TRYLOCK, std::memory_order_seq_cst, this)); } -void mutex::unlock() { - model->switch_to_master(new ModelAction(ATOMIC_UNLOCK, std::memory_order_seq_cst, this)); +void mutex::unlock() +{ + model->switch_to_master(new ModelAction(ATOMIC_UNLOCK, std::memory_order_seq_cst, this)); } }