xiaoxiang781216 commented on code in PR #14827: URL: https://github.com/apache/nuttx/pull/14827#discussion_r1867986349
########## include/nuttx/atomic.h: ########## @@ -27,72 +27,160 @@ * Included Files ****************************************************************************/ +#include <stdbool.h> + #ifdef __has_include -# if defined(__cplusplus) && __has_include(<atomic>) +# if __has_include(<atomic>) && defined(__cplusplus) extern "C++" { # include <atomic> +# define _Atomic +# define ATOMIC_FUNC(f, n) atomic_##f##_explicit -# define ATOMIC_VAR_INIT(value) (value) - - using std::memory_order; - using std::atomic_bool; - using std::atomic_char; - using std::atomic_schar; - using std::atomic_uchar; - using std::atomic_short; - using std::atomic_ushort; - using std::atomic_int; - using std::atomic_uint; - using std::atomic_long; - using std::atomic_ulong; - using std::atomic_llong; - using std::atomic_ullong; - - using std::atomic_load; using std::atomic_load_explicit; - using std::atomic_store; using std::atomic_store_explicit; - using std::atomic_exchange; using std::atomic_exchange_explicit; - using std::atomic_compare_exchange_strong; using std::atomic_compare_exchange_strong_explicit; - using std::atomic_compare_exchange_weak; using std::atomic_compare_exchange_weak_explicit; - using std::atomic_flag_test_and_set; - using std::atomic_flag_test_and_set_explicit; - using std::atomic_flag_clear; - using std::atomic_flag_clear_explicit; - using std::atomic_fetch_add; using std::atomic_fetch_add_explicit; - using std::atomic_fetch_sub; using std::atomic_fetch_sub_explicit; - using std::atomic_fetch_and; using std::atomic_fetch_and_explicit; - using std::atomic_fetch_or; using std::atomic_fetch_or_explicit; - using std::atomic_fetch_xor; using std::atomic_fetch_xor_explicit; } # elif __has_include(<stdatomic.h>) && \ ((defined(__cplusplus) && __cplusplus >= 201103L) || \ (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)) && \ !defined(__STDC_NO_ATOMICS__) -# if !(__clang__) && defined(__cplusplus) +# if !defined(__clang__) && defined(__cplusplus) # define _Atomic # endif -# include <stdbool.h> # include <stdatomic.h> -# ifndef ATOMIC_VAR_INIT -# define ATOMIC_VAR_INIT(value) (value) -# endif -# else -# include <nuttx/lib/stdatomic.h> +# define ATOMIC_FUNC(f, n) atomic_##f##_explicit # endif -#else -# include <nuttx/lib/stdatomic.h> #endif +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#ifndef ATOMIC_FUNC Review Comment: yes, but only the last else block needs atomic_fetch_xxx definition. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org