This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit e0733f6becb7d9958ff0419569fb44944713578a Author: zhangyu117 <[email protected]> AuthorDate: Sat Oct 31 19:58:22 2026 +0800 compiler.h: use the TASKING __c11_atomic_fetch_* builtins Commit 95fe3e8680b ("nuttx/atomic.h: use _Atomic define atomic_t.") turned the TASKING atomic wrappers into macros, but mapped the fetch-and-modify operations to __c11_atomic_add/sub/and/or/xor, which are not TASKING builtins. cctc only warns about the implicit declarations and the link then fails: ltc E106: unresolved external: __c11_atomic_add - (...) TASKING provides __c11_atomic_fetch_add/sub/and/or/xor, as used before that commit, switch back to them. Signed-off-by: zhangyu117 <[email protected]> --- include/nuttx/compiler.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/include/nuttx/compiler.h b/include/nuttx/compiler.h index b9fbd1afa4d..a44a84899cd 100644 --- a/include/nuttx/compiler.h +++ b/include/nuttx/compiler.h @@ -1488,16 +1488,16 @@ # define atomic_store_8(obj, val, memorder) __c11_atomic_store(obj, val, memorder) # define atomic_load_4(obj, memorder) __c11_atomic_load(obj, memorder) # define atomic_load_8(obj, memorder) __c11_atomic_load(obj, memorder) -# define atomic_fetch_add_4(obj, val, memorder) __c11_atomic_add(obj, val, memorder) -# define atomic_fetch_add_8(obj, val, memorder) __c11_atomic_add(obj, val, memorder) -# define atomic_fetch_sub_4(obj, val, memorder) __c11_atomic_sub(obj, val, memorder) -# define atomic_fetch_sub_8(obj, val, memorder) __c11_atomic_sub(obj, val, memorder) -# define atomic_fetch_and_4(obj, val, memorder) __c11_atomic_and(obj, val, memorder) -# define atomic_fetch_and_8(obj, val, memorder) __c11_atomic_and(obj, val, memorder) -# define atomic_fetch_or_4(obj, val, memorder) __c11_atomic_or(obj, val, memorder) -# define atomic_fetch_or_8(obj, val, memorder) __c11_atomic_or(obj, val, memorder) -# define atomic_fetch_xor_4(obj, val, memorder) __c11_atomic_xor(obj, val, memorder) -# define atomic_fetch_xor_8(obj, val, memorder) __c11_atomic_xor(obj, val, memorder) +# define atomic_fetch_add_4(obj, val, memorder) __c11_atomic_fetch_add(obj, val, memorder) +# define atomic_fetch_add_8(obj, val, memorder) __c11_atomic_fetch_add(obj, val, memorder) +# define atomic_fetch_sub_4(obj, val, memorder) __c11_atomic_fetch_sub(obj, val, memorder) +# define atomic_fetch_sub_8(obj, val, memorder) __c11_atomic_fetch_sub(obj, val, memorder) +# define atomic_fetch_and_4(obj, val, memorder) __c11_atomic_fetch_and(obj, val, memorder) +# define atomic_fetch_and_8(obj, val, memorder) __c11_atomic_fetch_and(obj, val, memorder) +# define atomic_fetch_or_4(obj, val, memorder) __c11_atomic_fetch_or(obj, val, memorder) +# define atomic_fetch_or_8(obj, val, memorder) __c11_atomic_fetch_or(obj, val, memorder) +# define atomic_fetch_xor_4(obj, val, memorder) __c11_atomic_fetch_xor(obj, val, memorder) +# define atomic_fetch_xor_8(obj, val, memorder) __c11_atomic_fetch_xor(obj, val, memorder) # define atomic_exchange_4(obj, val, memorder) __c11_atomic_exchange(obj, val, memorder) # define atomic_exchange_8(obj, val, memorder) __c11_atomic_exchange(obj, val, memorder) # define atomic_compare_exchange_4(obj, expected, desired, weak, success, failure) \
