use smp_*mb()
[urcu.git] / urcu.h
diff --git a/urcu.h b/urcu.h
index c4a7992b4b7b166d527411d4ae5108cac174fc95..92b31df603d157ffa942534af1d5731d912c2342 100644 (file)
--- a/urcu.h
+++ b/urcu.h
 #define rmb()   asm volatile("lfence":::"memory")
 #define wmb()   asm volatile("sfence" ::: "memory")
 
+/* Assume SMP machine, given we don't have this information */
+#define CONFIG_SMP 1
+
+#ifdef CONFIG_SMP
+#define smp_mb()       mb()
+#define smp_rmb()      rmb()
+#define smp_wmb()      wmb()
+#else
+#define smp_mb()       barrier()
+#define smp_rmb()      barrier()
+#define smp_wmb()      barrier()
+#endif
+
 static inline void atomic_inc(int *v)
 {
        asm volatile("lock; incl %0"
@@ -173,7 +186,7 @@ static inline void debug_yield_init(void)
 #ifdef DEBUG_FULL_MB
 static inline void read_barrier()
 {
-       mb();
+       smp_mb();
 }
 #else
 static inline void read_barrier()
This page took 0.022201 seconds and 4 git commands to generate.