Fix snapshot code
[model-checker.git] / impatomic.cc
index 0a35b4b65d0513da09bdc47d81614c7d14f7ab88..4b5d1c28941246fe1c0a1e2dc1567e4bac22a81e 100644 (file)
@@ -1,14 +1,14 @@
 #include "impatomic.h"
 #include "common.h"
 #include "model.h"
-#include "threads.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__);
-       model->switch_to_master(new ModelAction(ATOMIC_RMWR, __x__, (void *) __p__));
-       bool result = (bool) thread_current()->get_return_value();
+       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));
        return result;
 }
@@ -26,16 +26,15 @@ void atomic_flag_clear_explicit
 void atomic_flag_clear( volatile atomic_flag* __a__ )
 { atomic_flag_clear_explicit( __a__, memory_order_seq_cst ); }
 
-void atomic_flag_fence( const volatile atomic_flag* __a__, memory_order __x__ )
-{
-       ASSERT(0);
+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__ ))
+               ;
+}
 
 }