X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=impatomic.cc;h=0a35b4b65d0513da09bdc47d81614c7d14f7ab88;hb=28e1bf20ea2bc74d7376b7cd1bfce0fc409bcde9;hp=8642bee26c63011a112951d72a84bc1d7ed08bc6;hpb=b6db821be4ff9af669ff596a37d144006f6bbdaf;p=model-checker.git diff --git a/impatomic.cc b/impatomic.cc index 8642bee..0a35b4b 100644 --- a/impatomic.cc +++ b/impatomic.cc @@ -1,12 +1,13 @@ #include "impatomic.h" #include "common.h" #include "model.h" +#include "threads.h" namespace std { bool atomic_flag_test_and_set_explicit ( volatile atomic_flag * __a__, memory_order __x__ ) { volatile bool * __p__ = &((__a__)->__f__); - model->switch_to_master(new ModelAction(ATOMIC_READ, __x__, (void *) __p__)); + model->switch_to_master(new ModelAction(ATOMIC_RMWR, __x__, (void *) __p__)); bool result = (bool) thread_current()->get_return_value(); model->switch_to_master(new ModelAction(ATOMIC_RMW, __x__, (void *) __p__, true)); return result;