don't forget this file
[model-checker.git] / libatomic.cc
index f552d93dd80a127b32a4f7ea76ec7cc3e8d5d6c6..a7b1fd67eb8b6cacba28ea1ab1ce9f3c969b4d7e 100644 (file)
@@ -6,17 +6,17 @@ void atomic_store_explicit(struct atomic_object *obj, int value, memory_order or
 {
        DBG();
        model->switch_to_master(new ModelAction(ATOMIC_WRITE, order, obj, value));
-       obj->value = value;
 }
 
 int atomic_load_explicit(struct atomic_object *obj, memory_order order)
 {
        DBG();
-       model->switch_to_master(new ModelAction(ATOMIC_READ, order, obj, VALUE_NONE));
-       return obj->value;
+       model->switch_to_master(new ModelAction(ATOMIC_READ, order, obj));
+       return (int) thread_current()->get_return_value();
 }
 
 void atomic_init(struct atomic_object *obj, int value)
 {
-       obj->value = value;
+       DBG();
+       model->switch_to_master(new ModelAction(ATOMIC_INIT, memory_order_relaxed, obj, value));
 }