* TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu.h for linking
* dynamically with the userspace rcu library.
*
- * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
+ * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* Copyright (c) 2009 Paul E. McKenney, IBM Corporation.
*
* This library is free software; you can redistribute it and/or
static inline void smp_mb_slave(int group)
{
if (likely(has_sys_membarrier))
- barrier();
+ cmm_barrier();
else
- smp_mb();
+ cmm_smp_mb();
}
#endif
#ifdef RCU_MB
static inline void smp_mb_slave(int group)
{
- smp_mb();
+ cmm_smp_mb();
}
#endif
#ifdef RCU_SIGNAL
static inline void smp_mb_slave(int group)
{
- barrier();
+ cmm_barrier();
}
#endif
{
unsigned long tmp;
+ cmm_barrier(); /* Ensure the compiler does not reorder us with mutex */
tmp = rcu_reader.ctr;
/*
* rcu_gp_ctr is
} else {
_STORE_SHARED(rcu_reader.ctr, rcu_reader.ctr - RCU_GP_COUNT);
}
+ cmm_barrier(); /* Ensure the compiler does not reorder us with mutex */
}
-#ifdef __cplusplus
+#ifdef __cplusplus
}
#endif