From: matoro Date: Sun, 10 Jul 2022 03:44:00 +0000 (-0400) Subject: fundamental: replace __sync with __atomic in ONCE macro X-Git-Tag: v252-rc1~611^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9ddb63f5cf457ce612404864af97559bf60a9014;p=thirdparty%2Fsystemd.git fundamental: replace __sync with __atomic in ONCE macro For this one, we can actually just use __atomic_exchange_n since we don't need the "compare" part of __atomic_compare_exchange_n. --- diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index a738b1f50e8..7cc34b6f1ac 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -106,10 +106,10 @@ * on this macro will run concurrently to all other code conditionalized * the same way, there's no ordering or completion enforced. */ #define ONCE __ONCE(UNIQ_T(_once_, UNIQ)) -#define __ONCE(o) \ - ({ \ - static bool (o) = false; \ - __sync_bool_compare_and_swap(&(o), false, true); \ +#define __ONCE(o) \ + ({ \ + static bool (o) = false; \ + __atomic_exchange_n(&(o), true, __ATOMIC_SEQ_CST); \ }) #undef MAX