From: Peizhao Ou Date: Wed, 7 Dec 2016 23:20:29 +0000 (-0800) Subject: revert the RCU benchmark back with atomic variables X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b650d322ec9cad49a275c049a7fe6ffab6e2198c;p=model-checker-benchmarks.git revert the RCU benchmark back with atomic variables --- diff --git a/read-copy-update/rcu.cc b/read-copy-update/rcu.cc index 8c6a956..55f3bb9 100644 --- a/read-copy-update/rcu.cc +++ b/read-copy-update/rcu.cc @@ -18,14 +18,14 @@ void read(int *data1, int *data2) { /********** Detected Correctness **********/ Data *res = dataPtr.load(memory_order_acquire); /** @OPDefine: true */ - *data1 = res->data1; - *data2 = res->data2; + *data1 = res->data1.load(memory_order_relaxed); + *data2 = res->data2.load(memory_order_relaxed); //load_32(&res->data1); } static void inc(Data *newPtr, Data *prev, int d1, int d2) { - newPtr->data1 = prev->data1 + d1; - newPtr->data2 = prev->data2 + d2; + newPtr->data1.store(prev->data1.load(memory_order_relaxed) + d1, memory_order_relaxed); + newPtr->data2.store(prev->data2.load(memory_order_relaxed) + d2, memory_order_relaxed); } /** @Transition: STATE(data1) += data1; diff --git a/read-copy-update/rcu.h b/read-copy-update/rcu.h index f40edf4..c0d20fa 100644 --- a/read-copy-update/rcu.h +++ b/read-copy-update/rcu.h @@ -10,9 +10,10 @@ #include "librace.h" struct Data { - /** Declare atomic just to expose them to CDSChecker */ - int data1; - int data2; + // Declare atomic to expose them to CDSChecker. + // Otherwise, we might miss the data race reports. + atomic_int data1; + atomic_int data2; };