x86: allocate membarrier system call number
[urcu.git] / urcu / arch / generic.h
index 100d3c6c12948a2f88bc769f0dc26325a1036027..3f7521ebdd820261b7b2b43b328692a6186319f7 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <urcu/compiler.h>
 #include <urcu/config.h>
+#include <urcu/syscall-compat.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -37,9 +38,9 @@ extern "C" {
 /*
  * Architectures with cache coherency must _not_ define cmm_mc/cmm_rmc/cmm_wmc.
  *
- * For them, cmm_mc/cmm_rmc/cmm_wmc are implemented with a * simple compiler barrier;
- * in addition, we provide defaults for cmm_mb (using GCC builtins) as well as
- * cmm_rmb and cmm_wmb (defaulting to cmm_mb).
+ * For them, cmm_mc/cmm_rmc/cmm_wmc are implemented with a simple
+ * compiler barrier; in addition, we provide defaults for cmm_mb (using
+ * GCC builtins) as well as cmm_rmb and cmm_wmb (defaulting to cmm_mb).
  */
 
 #ifndef cmm_mb
@@ -61,14 +62,14 @@ extern "C" {
 /*
  * Architectures without cache coherency need something like the following:
  *
- * #define cmm_mc()            arch_cache_flush() 
+ * #define cmm_mc()    arch_cache_flush() 
  * #define cmm_rmc()   arch_cache_flush_read()
  * #define cmm_wmc()   arch_cache_flush_write()
  *
- * Of these, only cmm_mc is mandatory.  cmm_rmc and cmm_wmc default to cmm_mc.  
- * cmm_mb/cmm_rmb/cmm_wmb use these definitions by default:
+ * Of these, only cmm_mc is mandatory. cmm_rmc and cmm_wmc default to
+ * cmm_mc. cmm_mb/cmm_rmb/cmm_wmb use these definitions by default:
  *
- * #define cmm_mb()            cmm_mc()
+ * #define cmm_mb()    cmm_mc()
  * #define cmm_rmb()   cmm_rmc()
  * #define cmm_wmb()   cmm_wmc()
  */
@@ -100,22 +101,50 @@ extern "C" {
 #endif
 
 #ifdef CONFIG_RCU_SMP
+#ifndef cmm_smp_mb
 #define cmm_smp_mb()   cmm_mb()
+#endif
+#ifndef cmm_smp_rmb
 #define cmm_smp_rmb()  cmm_rmb()
+#endif
+#ifndef cmm_smp_wmb
 #define cmm_smp_wmb()  cmm_wmb()
+#endif
+#ifndef cmm_smp_mc
 #define cmm_smp_mc()   cmm_mc()
+#endif
+#ifndef cmm_smp_rmc
 #define cmm_smp_rmc()  cmm_rmc()
+#endif
+#ifndef cmm_smp_wmc
 #define cmm_smp_wmc()  cmm_wmc()
+#endif
+#ifndef cmm_smp_read_barrier_depends
 #define cmm_smp_read_barrier_depends() cmm_read_barrier_depends()
+#endif
 #else
+#ifndef cmm_smp_mb
 #define cmm_smp_mb()   cmm_barrier()
+#endif
+#ifndef cmm_smp_rmb
 #define cmm_smp_rmb()  cmm_barrier()
+#endif
+#ifndef cmm_smp_wmb
 #define cmm_smp_wmb()  cmm_barrier()
+#endif
+#ifndef cmm_smp_mc
 #define cmm_smp_mc()   cmm_barrier()
+#endif
+#ifndef cmm_smp_rmc
 #define cmm_smp_rmc()  cmm_barrier()
+#endif
+#ifndef cmm_smp_wmc
 #define cmm_smp_wmc()  cmm_barrier()
+#endif
+#ifndef cmm_smp_read_barrier_depends
 #define cmm_smp_read_barrier_depends()
 #endif
+#endif
 
 #ifndef caa_cpu_relax
 #define caa_cpu_relax()                cmm_barrier()
This page took 0.02315 seconds and 4 git commands to generate.