X-Git-Url: http://plrg.eecs.uci.edu/git/?p=cdsspec-compiler.git;a=blobdiff_plain;f=mutex.cc;h=d5ec40fff402df19093d68975c8a8914c0fa7567;hp=b31b20a8ed2f02446fd1c4fbea5965c65b2b6979;hb=d590c23e98d4ad4da4df6eda33cbdb04c29c25ea;hpb=bd893aac350f125dc990f0ccd32b8e3cf133e2fb diff --git a/mutex.cc b/mutex.cc index b31b20a..d5ec40f 100644 --- a/mutex.cc +++ b/mutex.cc @@ -1,25 +1,34 @@ -#include "mutex.h" -#include "model.h" +#include +#include "model.h" +#include "execution.h" +#include "threads-model.h" +#include "clockvector.h" +#include "action.h" namespace std { -mutex::mutex() : - owner(0), islocked(false) -{ +mutex::mutex() +{ + state.locked = NULL; + thread_id_t tid = thread_current()->get_id(); + state.alloc_tid = tid; + state.alloc_clock = model->get_execution()->get_cv(tid)->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() { - model->switch_to_master(new ModelAction(ATOMIC_TRYLOCK, std::memory_order_seq_cst, this)); - return thread_current()->get_return_value(); +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)); } }