projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
urcu-qsbr: document compiler barrier
[urcu.git]
/
urcu-qsbr.c
diff --git
a/urcu-qsbr.c
b/urcu-qsbr.c
index 84789f2ebfdd4fa89def6fb56274595739a51d02..25074d09063a60ae5c94a17b18cd9d241b1e2fb9 100644
(file)
--- a/
urcu-qsbr.c
+++ b/
urcu-qsbr.c
@@
-120,6
+120,13
@@
static void update_counter_and_wait(void)
STORE_SHARED(rcu_gp_ctr, rcu_gp_ctr + RCU_GP_CTR);
#endif /* !(BITS_PER_LONG < 64) */
STORE_SHARED(rcu_gp_ctr, rcu_gp_ctr + RCU_GP_CTR);
#endif /* !(BITS_PER_LONG < 64) */
+ /*
+ * Enforce compiler-order of store to rcu_gp_ctr before before
+ * load rcu_reader ctr.
+ * This ensures synchronize_rcu() cannot be starved by readers.
+ */
+ barrier();
+
/*
* Wait for each thread rcu_reader_qs_gp count to become 0.
*/
/*
* Wait for each thread rcu_reader_qs_gp count to become 0.
*/
This page took
0.024133 seconds
and
4
git commands to generate.