X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=blobdiff_plain;f=mutex.cc;h=7fa0b589c8a4535a276c7f8f95eda76782bff554;hp=2cf6828af0ac679811d0fe7cac42d57502fe60d9;hb=0c429b461653b8e02e515819d89b7acd241996ca;hpb=9ba28a8ef15225525c30c5303c859f64602820a3 diff --git a/mutex.cc b/mutex.cc index 2cf6828..7fa0b58 100644 --- a/mutex.cc +++ b/mutex.cc @@ -1,10 +1,15 @@ -#include "mutex.h" -#include "model.h" +#include +#include "model.h" +#include "threads-model.h" +#include "clockvector.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); } void mutex::lock() { @@ -12,8 +17,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() {