This is part of the broader rte_atomic32 deprecation work, sent separately because it is the most complex part and benefits from independent review.
Convert lib/ring off rte_atomic32 and onto the C11 memory model, except for the ring head compare-and-swap where special case is needed. On x86 with GCC using C11 atomics produces measurably worse code. After this series only __rte_ring_headtail_move_head has separate C11 and GCC-builtin implementations; everything else uses the same code on all architectures. The default RTE_USE_C11_MEM_MODEL selection per architecture is unchanged. v3: - rebase and squash patches - keep original code for x86 single thread case Stephen Hemminger (2): ring: split single thread vs multi-thread cases ring: replace rte_atomic32 with __sync builtin lib/ring/meson.build | 2 +- lib/ring/rte_ring_c11_pvt.h | 107 +++++++++++++-------- lib/ring/rte_ring_elem_pvt.h | 53 ++++++++--- lib/ring/rte_ring_gcc_pvt.h | 155 +++++++++++++++++++++++++++++++ lib/ring/rte_ring_generic_pvt.h | 119 ------------------------ lib/ring/rte_ring_hts_elem_pvt.h | 8 +- lib/ring/soring.c | 34 ++++--- 7 files changed, 289 insertions(+), 189 deletions(-) create mode 100644 lib/ring/rte_ring_gcc_pvt.h delete mode 100644 lib/ring/rte_ring_generic_pvt.h -- 2.53.0

