projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
urcu/annotate: Add CMM annotation
[userspace-rcu.git]
/
include
/
urcu
/
static
/
urcu-common.h
diff --git
a/include/urcu/static/urcu-common.h
b/include/urcu/static/urcu-common.h
index 50d1230981158b90eb12b87d6b4c1a9aa011b6b8..d0fd06a3e221705ca14bbf820805658c65e1dda5 100644
(file)
--- a/
include/urcu/static/urcu-common.h
+++ b/
include/urcu/static/urcu-common.h
@@
-20,6
+20,7
@@
#include <unistd.h>
#include <stdint.h>
#include <unistd.h>
#include <stdint.h>
+#include <urcu/annotate.h>
#include <urcu/config.h>
#include <urcu/compiler.h>
#include <urcu/arch.h>
#include <urcu/config.h>
#include <urcu/compiler.h>
#include <urcu/arch.h>
@@
-91,7
+92,8
@@
static inline void urcu_common_wake_up_gp(struct urcu_gp *gp)
}
static inline enum urcu_state urcu_common_reader_state(struct urcu_gp *gp,
}
static inline enum urcu_state urcu_common_reader_state(struct urcu_gp *gp,
- unsigned long *ctr)
+ unsigned long *ctr,
+ cmm_annotate_t *group)
{
unsigned long v;
{
unsigned long v;
@@
-99,7
+101,9
@@
static inline enum urcu_state urcu_common_reader_state(struct urcu_gp *gp,
* Make sure both tests below are done on the same version of *value
* to insure consistency.
*/
* Make sure both tests below are done on the same version of *value
* to insure consistency.
*/
- v = CMM_LOAD_SHARED(*ctr);
+ v = uatomic_load(ctr, CMM_RELAXED);
+ cmm_annotate_group_mem_acquire(group, ctr);
+
if (!(v & URCU_GP_CTR_NEST_MASK))
return URCU_READER_INACTIVE;
if (!((v ^ gp->ctr) & URCU_GP_CTR_PHASE))
if (!(v & URCU_GP_CTR_NEST_MASK))
return URCU_READER_INACTIVE;
if (!((v ^ gp->ctr) & URCU_GP_CTR_PHASE))
This page took
0.023027 seconds
and
4
git commands to generate.