[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