X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=impatomic.cc;h=391ce2aa159cea4b6e103d074c6cb5eb53032dfd;hp=c10c43e596682a960896f1cef7380e1dea5de9f7;hb=251ac4b4bf3a9f2d3cfacc1e6618200ca1c431ac;hpb=b35625b0499717b3caab5344d7278a31fbee9cb6 diff --git a/impatomic.cc b/impatomic.cc index c10c43e5..391ce2aa 100644 --- a/impatomic.cc +++ b/impatomic.cc @@ -2,13 +2,14 @@ #include "common.h" #include "model.h" #include "threads-model.h" +#include "action.h" namespace std { bool atomic_flag_test_and_set_explicit ( volatile atomic_flag * __a__, memory_order __x__ ) { volatile bool * __p__ = &((__a__)->__f__); - bool result = (bool) model->switch_to_master(new ModelAction(ATOMIC_RMWR, __x__, (void *) __p__)); - model->switch_to_master(new ModelAction(ATOMIC_RMW, __x__, (void *) __p__, true)); + bool result = (bool) model->switch_thread(new ModelAction(ATOMIC_RMWR, __x__, (void *) __p__)); + model->switch_thread(new ModelAction(ATOMIC_RMW, __x__, (void *) __p__, true)); return result; } @@ -16,20 +17,24 @@ bool atomic_flag_test_and_set( volatile atomic_flag* __a__ ) { return atomic_flag_test_and_set_explicit( __a__, memory_order_seq_cst ); } void atomic_flag_clear_explicit -( volatile atomic_flag* __a__, memory_order __x__ ) + ( volatile atomic_flag* __a__, memory_order __x__ ) { volatile bool * __p__ = &((__a__)->__f__); - model->switch_to_master(new ModelAction(ATOMIC_WRITE, __x__, (void *) __p__, false)); + model->switch_thread(new ModelAction(ATOMIC_WRITE, __x__, (void *) __p__, false)); } void atomic_flag_clear( volatile atomic_flag* __a__ ) { atomic_flag_clear_explicit( __a__, memory_order_seq_cst ); } -void __atomic_flag_wait__( volatile atomic_flag* __a__ ) -{ while ( atomic_flag_test_and_set( __a__ ) ); } +void __atomic_flag_wait__( volatile atomic_flag* __a__ ) { + while ( atomic_flag_test_and_set( __a__ ) ) + ; +} void __atomic_flag_wait_explicit__( volatile atomic_flag* __a__, - memory_order __x__ ) -{ while ( atomic_flag_test_and_set_explicit( __a__, __x__ ) ); } + memory_order __x__ ) { + while ( atomic_flag_test_and_set_explicit( __a__, __x__ )) + ; +} }