From b650d322ec9cad49a275c049a7fe6ffab6e2198c Mon Sep 17 00:00:00 2001 From: Peizhao Ou Date: Wed, 7 Dec 2016 15:20:29 -0800 Subject: [PATCH] revert the RCU benchmark back with atomic variables --- read-copy-update/rcu.cc | 8 ++++---- read-copy-update/rcu.h | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) 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; }; -- 2.34.1