[PATCH 0/6] RFC optional rte optional stdatomics API
Tyler Retzlaff
roretzla at linux.microsoft.com
Fri Aug 11 03:31:55 CEST 2023
This series introduces API additions prefixed in the rte namespace that allow
the optional use of stdatomics.h from C11 using enable_stdatomics=true for
targets where enable_stdatomics=false no functional change is intended.
Be aware this does not contain all changes to use stdatomics across the DPDK
tree it only introduces the minimum to allow the option to be used which is
a pre-requisite for a clean CI (probably using clang) that can be run
with enable_stdatomics=true enabled.
It is planned that subsequent series will be introduced per lib/driver as
appropriate to further enable stdatomics use when enable_stdatomics=true.
Notes:
* additional libraries beyond EAL make visible atomics use across the
API/ABI surface they will be converted in the next series.
* the eal: add rte atomic qualifier with casts patch needs some discussion
as to whether or not the legacy rte_atomic APIs should be converted to
work with enable_stdatomic=true right now some implementation dependent
casts are used to prevent cascading / having to convert too much in
the intial series.
* windows will obviously need complete conversion of libraries including
atomics that are not crossing API/ABI boundaries. those conversions will
introduced in separate series as new along side the existing msvc series.
Please keep in mind we would like to prioritize the review / acceptance of
this patch since it needs to be completed in the 23.11 merge window.
Thank you all for the discussion that lead to the formation of this series.
Tyler Retzlaff (6):
eal: provide rte stdatomics optional atomics API
eal: adapt EAL to present rte optional atomics API
eal: add rte atomic qualifier with casts
distributor: adapt for EAL optional atomics API changes
bpf: adapt for EAL optional atomics API changes
devtools: forbid new direct use of GCC atomic builtins
app/test/test_mcslock.c | 6 +-
config/meson.build | 1 +
config/rte_config.h | 1 +
devtools/checkpatches.sh | 8 ++
lib/bpf/bpf_pkt.c | 6 +-
lib/distributor/distributor_private.h | 2 +-
lib/distributor/rte_distributor_single.c | 44 ++++-----
lib/eal/arm/include/rte_atomic_64.h | 32 +++---
lib/eal/arm/include/rte_pause_64.h | 26 ++---
lib/eal/arm/rte_power_intrinsics.c | 8 +-
lib/eal/common/eal_common_trace.c | 16 +--
lib/eal/include/generic/rte_atomic.h | 66 ++++++++-----
lib/eal/include/generic/rte_pause.h | 41 ++++----
lib/eal/include/generic/rte_rwlock.h | 47 ++++-----
lib/eal/include/generic/rte_spinlock.h | 19 ++--
lib/eal/include/meson.build | 1 +
lib/eal/include/rte_mcslock.h | 50 +++++-----
lib/eal/include/rte_pflock.h | 24 ++---
lib/eal/include/rte_seqcount.h | 18 ++--
lib/eal/include/rte_stdatomic.h | 162 +++++++++++++++++++++++++++++++
lib/eal/include/rte_ticketlock.h | 42 ++++----
lib/eal/include/rte_trace_point.h | 4 +-
lib/eal/ppc/include/rte_atomic.h | 50 +++++-----
lib/eal/x86/include/rte_atomic.h | 4 +-
lib/eal/x86/include/rte_spinlock.h | 2 +-
lib/eal/x86/rte_power_intrinsics.c | 7 +-
meson_options.txt | 1 +
27 files changed, 445 insertions(+), 243 deletions(-)
create mode 100644 lib/eal/include/rte_stdatomic.h
--
1.8.3.1
More information about the dev
mailing list