[PATCH v2 0/4] eal: update public API to use stdatomic atomics
Tyler Retzlaff
roretzla at linux.microsoft.com
Tue Aug 1 19:07:31 CEST 2023
top post
just a heads up on this series, please defer review until v3 is
submitted.
clang is stricter in atomic type enforcement than gcc so a new revision
is needed that removes the direct use of intrinsics replacing them with
the standard atomics for all _Atomic types.
thanks
On Mon, Jul 31, 2023 at 10:03:50PM -0700, Tyler Retzlaff wrote:
> Update EAL public API to use standard C11 atomics. In accordance with
> technical board discussion February 2023.
> http://mails.dpdk.org/archives/dev/2023-February/263516.html
>
> This initial series makes no attempt to adapt every use of builtin atomics
> from GCC it intends only to adapt the public API of the EAL presented as
> a compatibility surface to applications.
>
> Further series will be submitted to adapt the rest of DPDK to use standard
> atomics that are 'internal' and not do not straddle the EAL API.
>
> The choice has been made to break these two changes apart to allow more
> precise analysis of any potential performance impact this change or
> subsequent changes may introduce.
>
> Additionally, it is not possible to break the commits up per driver/lib as
> both the provider and consumer of the APIs need to be changed in the same
> commit to maintain non-broken build and function.
>
> Finally, the first patch in this series is a duplication of Bruce Richardson
> series https://patchwork.dpdk.org/project/dpdk/list/?series=29048 and is
> only being provided to enable the CI run on this series. It is expected that
> Bruce's series when committed will allow the build: require minimum c11 compiler
> here to be dropped from this series.
>
> v2:
> * remove volatile qualification from variables, structure fields and
> parameters that have been qualified _Atomic
> * restore removal of #include <rte_atomic.h> in rte_ring_core.h the ring
> library still uses other rte_atomic APIs and types that are not replaced
> by the standard or compiler intrinsics
> * add missing adaption to stdatomic in ring/rte_ring_c11_pvt.h
>
> Tyler Retzlaff (4):
> build: require minimum c11 compiler
> devtools: forbid use of GCC atomic builtins
> eal: adapt rte pause APIs to use C11 atomics
> eal: adapt rte spinlock and rwlock APIs to use C11 atomics
>
> app/test-bbdev/test_bbdev_perf.c | 123 ++++++++++++++++++++-----------
> app/test/test_func_reentrancy.c | 8 +-
> app/test/test_mcslock.c | 12 +--
> app/test/test_mempool_perf.c | 8 +-
> app/test/test_pflock.c | 12 +--
> app/test/test_pmd_perf.c | 10 +--
> app/test/test_ring_perf.c | 8 +-
> app/test/test_rwlock.c | 8 +-
> app/test/test_spinlock.c | 8 +-
> app/test/test_stack_perf.c | 12 +--
> app/test/test_ticketlock.c | 8 +-
> app/test/test_timer.c | 16 ++--
> devtools/checkpatches.sh | 8 ++
> drivers/event/opdl/opdl_ring.c | 47 ++++++------
> drivers/net/failsafe/meson.build | 1 -
> drivers/net/thunderx/nicvf_rxtx.c | 5 +-
> drivers/net/thunderx/nicvf_struct.h | 2 +-
> lib/bpf/bpf_pkt.c | 4 +-
> lib/distributor/distributor_private.h | 2 +-
> lib/distributor/rte_distributor_single.c | 44 +++++------
> lib/eal/arm/include/rte_pause_64.h | 28 +++----
> lib/eal/common/eal_common_errno.c | 1 +
> lib/eal/common/eal_memcfg.h | 2 +-
> lib/eal/include/generic/rte_pause.h | 52 ++++++-------
> lib/eal/include/generic/rte_rwlock.h | 46 ++++++------
> lib/eal/include/generic/rte_spinlock.h | 21 +++---
> lib/eal/include/rte_mcslock.h | 12 +--
> lib/eal/include/rte_pflock.h | 22 +++---
> lib/eal/include/rte_ticketlock.h | 8 +-
> lib/eal/loongarch/include/rte_pause.h | 2 -
> lib/eal/ppc/include/rte_pause.h | 2 -
> lib/eal/riscv/include/rte_pause.h | 2 -
> lib/eal/x86/include/rte_spinlock.h | 2 +-
> lib/ring/rte_ring_c11_pvt.h | 28 +++----
> lib/ring/rte_ring_core.h | 4 +-
> lib/ring/rte_ring_generic_pvt.h | 19 +++--
> lib/ring/rte_ring_peek_elem_pvt.h | 2 +-
> meson.build | 1 +
> 38 files changed, 326 insertions(+), 274 deletions(-)
>
> --
> 1.8.3.1
More information about the dev
mailing list