hook up the race detector...
[c11tester.git] / libatomic.cc
index 6734148dc2cdd117998c111903c83b2457b4be29..a07653303c86348dfc5fe16fee790f137e478a11 100644 (file)
@@ -5,13 +5,21 @@
 void atomic_store_explicit(struct atomic_object *obj, int value, memory_order order)
 {
        DBG();
-       model->switch_to_master(new ModelAction(ATOMIC_WRITE, order, obj, value));
        obj->value = value;
+       model->switch_to_master(new ModelAction(ATOMIC_WRITE, order, obj, value));
 }
 
 int atomic_load_explicit(struct atomic_object *obj, memory_order order)
 {
+       int value = obj->value;
        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, value));
+       return value;
+}
+
+void atomic_init(struct atomic_object *obj, int value)
+{
+       DBG();
+       obj->value = value;
+       model->switch_to_master(new ModelAction(ATOMIC_INIT, memory_order_relaxed, obj, value));
 }