eal/x86: define I/O device memory barriers
[dpdk.git] / lib / librte_eal / common / include / arch / x86 / rte_atomic.h
index e93e8ee..4eac666 100644 (file)
@@ -38,6 +38,8 @@
 extern "C" {
 #endif
 
+#include <stdint.h>
+#include <rte_common.h>
 #include <emmintrin.h>
 #include "generic/rte_atomic.h"
 
@@ -53,6 +55,18 @@ extern "C" {
 
 #define        rte_rmb() _mm_lfence()
 
+#define rte_smp_mb() rte_mb()
+
+#define rte_smp_wmb() rte_compiler_barrier()
+
+#define rte_smp_rmb() rte_compiler_barrier()
+
+#define rte_io_mb() rte_mb()
+
+#define rte_io_wmb() rte_compiler_barrier()
+
+#define rte_io_rmb() rte_compiler_barrier()
+
 /*------------------------- 16 bit atomic operations -------------------------*/
 
 #ifndef RTE_FORCE_INTRINSICS
@@ -112,7 +126,7 @@ static inline int rte_atomic16_inc_and_test(rte_atomic16_t *v)
                        : [cnt] "+m" (v->cnt),  /* output */
                          [ret] "=qm" (ret)
                        );
-       return (ret != 0);
+       return ret != 0;
 }
 
 static inline int rte_atomic16_dec_and_test(rte_atomic16_t *v)
@@ -125,7 +139,7 @@ static inline int rte_atomic16_dec_and_test(rte_atomic16_t *v)
                        : [cnt] "+m" (v->cnt),  /* output */
                          [ret] "=qm" (ret)
                        );
-       return (ret != 0);
+       return ret != 0;
 }
 
 /*------------------------- 32 bit atomic operations -------------------------*/
@@ -186,7 +200,7 @@ static inline int rte_atomic32_inc_and_test(rte_atomic32_t *v)
                        : [cnt] "+m" (v->cnt),  /* output */
                          [ret] "=qm" (ret)
                        );
-       return (ret != 0);
+       return ret != 0;
 }
 
 static inline int rte_atomic32_dec_and_test(rte_atomic32_t *v)
@@ -199,7 +213,7 @@ static inline int rte_atomic32_dec_and_test(rte_atomic32_t *v)
                        : [cnt] "+m" (v->cnt),  /* output */
                          [ret] "=qm" (ret)
                        );
-       return (ret != 0);
+       return ret != 0;
 }
 #endif