From: Eli Britstein Date: Thu, 15 Oct 2020 15:10:17 +0000 (+0000) Subject: eal: fix build with conflicting libc variable memory_order X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=057d9a92f0a9aa07dd820669d4a07b325661929f;p=dpdk.git eal: fix build with conflicting libc variable memory_order The cited commit introduced functions with 'int memory_order' argument. The C11 standard section 7.17.1.4 defines 'memory_order' as the "enumerated type whose enumerators identify memory ordering constraints". A compilation error occurs: error: declaration of 'memory_order' shadows a global declaration [-Werror=shadow] rte_atomic_thread_fence(int memory_order) This issue was hit when trying to compile OVS with gcc 4.8.5. This compiler version does not provide stdatomic.h, so enum memory_order is redefined in OVS code. In another case, if the compiler does provide stdatomic.h header, passing -Wsystem-headers in the CFLAGS will also cause that failure. Fix it by changing the argument name 'memory_order' to 'memorder'. Fixes: 672a15056380 ("eal: add wrapper for C11 atomic thread fence") Signed-off-by: Eli Britstein Reviewed-by: Asaf Penso Acked-by: Thomas Monjalon Acked-by: David Marchand Reviewed-by: Honnappa Nagarahalli --- diff --git a/lib/librte_eal/arm/include/rte_atomic_32.h b/lib/librte_eal/arm/include/rte_atomic_32.h index 9d0568d497..fe48ab428e 100644 --- a/lib/librte_eal/arm/include/rte_atomic_32.h +++ b/lib/librte_eal/arm/include/rte_atomic_32.h @@ -34,9 +34,9 @@ extern "C" { #define rte_io_rmb() rte_rmb() static __rte_always_inline void -rte_atomic_thread_fence(int memory_order) +rte_atomic_thread_fence(int memorder) { - __atomic_thread_fence(memory_order); + __atomic_thread_fence(memorder); } #ifdef __cplusplus diff --git a/lib/librte_eal/arm/include/rte_atomic_64.h b/lib/librte_eal/arm/include/rte_atomic_64.h index c518559bc9..20dd6c75dd 100644 --- a/lib/librte_eal/arm/include/rte_atomic_64.h +++ b/lib/librte_eal/arm/include/rte_atomic_64.h @@ -38,9 +38,9 @@ extern "C" { #define rte_io_rmb() rte_rmb() static __rte_always_inline void -rte_atomic_thread_fence(int memory_order) +rte_atomic_thread_fence(int memorder) { - __atomic_thread_fence(memory_order); + __atomic_thread_fence(memorder); } /*------------------------ 128 bit atomic operations -------------------------*/ diff --git a/lib/librte_eal/include/generic/rte_atomic.h b/lib/librte_eal/include/generic/rte_atomic.h index d1255b2d8c..276272f40b 100644 --- a/lib/librte_eal/include/generic/rte_atomic.h +++ b/lib/librte_eal/include/generic/rte_atomic.h @@ -122,7 +122,7 @@ static inline void rte_io_rmb(void); /** * Synchronization fence between threads based on the specified memory order. */ -static inline void rte_atomic_thread_fence(int memory_order); +static inline void rte_atomic_thread_fence(int memorder); /*------------------------- 16 bit atomic operations -------------------------*/ diff --git a/lib/librte_eal/ppc/include/rte_atomic.h b/lib/librte_eal/ppc/include/rte_atomic.h index a91989930b..6a7e65210c 100644 --- a/lib/librte_eal/ppc/include/rte_atomic.h +++ b/lib/librte_eal/ppc/include/rte_atomic.h @@ -37,9 +37,9 @@ extern "C" { #define rte_io_rmb() rte_rmb() static __rte_always_inline void -rte_atomic_thread_fence(int memory_order) +rte_atomic_thread_fence(int memorder) { - __atomic_thread_fence(memory_order); + __atomic_thread_fence(memorder); } /*------------------------- 16 bit atomic operations -------------------------*/ diff --git a/lib/librte_eal/x86/include/rte_atomic.h b/lib/librte_eal/x86/include/rte_atomic.h index b7d6b06ddf..915afd9d27 100644 --- a/lib/librte_eal/x86/include/rte_atomic.h +++ b/lib/librte_eal/x86/include/rte_atomic.h @@ -87,12 +87,12 @@ rte_smp_mb(void) * used instead. */ static __rte_always_inline void -rte_atomic_thread_fence(int memory_order) +rte_atomic_thread_fence(int memorder) { - if (memory_order == __ATOMIC_SEQ_CST) + if (memorder == __ATOMIC_SEQ_CST) rte_smp_mb(); else - __atomic_thread_fence(memory_order); + __atomic_thread_fence(memorder); } /*------------------------- 16 bit atomic operations -------------------------*/