[PATCH v2] eal: introduce atomics abstraction
Mattias Rönnblom
hofors at lysator.liu.se
Mon Apr 3 23:32:50 CEST 2023
On 2023-02-09 18:38, Tyler Retzlaff wrote:
> On Thu, Feb 09, 2023 at 09:04:16AM +0000, Bruce Richardson wrote:
>> On Wed, Feb 08, 2023 at 01:43:38PM -0800, Tyler Retzlaff wrote:
>>> Introduce atomics abstraction that permits optional use of standard C11
>>> atomics when meson is provided the new enable_stdatomics=true option.
>>>
>>> Signed-off-by: Tyler Retzlaff <roretzla at linux.microsoft.com>
>>> ---
>>> config/meson.build | 11 ++++
>>> lib/eal/arm/include/rte_atomic_32.h | 6 ++-
>>> lib/eal/arm/include/rte_atomic_64.h | 6 ++-
>>> lib/eal/include/generic/rte_atomic.h | 96 +++++++++++++++++++++++++++++++++-
>>> lib/eal/loongarch/include/rte_atomic.h | 6 ++-
>>> lib/eal/ppc/include/rte_atomic.h | 6 ++-
>>> lib/eal/riscv/include/rte_atomic.h | 6 ++-
>>> lib/eal/x86/include/rte_atomic.h | 8 ++-
>>> meson_options.txt | 2 +
>>> 9 files changed, 139 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/config/meson.build b/config/meson.build
>>> index 26f3168..25dd628 100644
>>> --- a/config/meson.build
>>> +++ b/config/meson.build
>>> @@ -255,6 +255,17 @@ endif
>>> # add -include rte_config to cflags
>>> add_project_arguments('-include', 'rte_config.h', language: 'c')
>>>
>>> +stdc_atomics_enabled = get_option('enable_stdatomics')
>>> +dpdk_conf.set('RTE_STDC_ATOMICS', stdc_atomics_enabled)
>>> +
>>> +if stdc_atomics_enabled
>>> +if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
>>> + add_project_arguments('-std=gnu11', language: 'c')
>>
>> Is there a reason for using gnu11 on gcc and clang, rather than limiting
>> ourselves to proper c11 support?
>
> there is code using posix extensions, there are two ways to use them
> without emitting warnings.
>
> 1. -std=gnu11 (to get C11 with GNU extensions)
>
> -- or --
>
> 2. -std=c11 and then in the source files consuming the C11 GNU
> extensions do some dance with various GNUC macros before including
> various stdxxx.h headers to enable the extensions for the translation
> unit.
>
> i vaguely recall that if you try to do a test build with -std=c11 over
> the whole tree with meson --werror it will highlight the exact code i'm
> talking about.
>
> selfishly i'd be happy to see (2) done and potentially eliminate the use
> of the extensions, but i didn't want to be disruptive as a part of this
> change.
>
Some of the GNU extensions are useful, and have no equivalent in C11.
Statement expressions is one example that comes to mind.
I think you can get such code through GCC even with -std=c11, but not if
combined with -pedantic.
More information about the dev
mailing list