]> www.infradead.org Git - users/hch/misc.git/commitdiff
selftests: harness: Remove dependency on libatomic
authorThomas Weißschuh <thomas.weissschuh@linutronix.de>
Mon, 5 May 2025 15:15:24 +0000 (17:15 +0200)
committerThomas Weißschuh <linux@weissschuh.net>
Tue, 13 May 2025 05:35:50 +0000 (07:35 +0200)
__sync_bool_compare_and_swap() is deprecated and requires libatomic on
GCC. Compiler toolchains don't necessarily have libatomic available, so
avoid this requirement by using atomics that don't need libatomic.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Acked-by: Shuah Khan <skhan@linuxfoundation.org>
Link: https://lore.kernel.org/r/20250505-nolibc-kselftest-harness-v4-6-ee4dd5257135@linutronix.de
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
tools/testing/selftests/kselftest_harness.h

index 222a4f51a8d704c41597e09a241ad887ef787139..7ec4f66d0e3d7f129f6c2a45ff58310dabe5d03f 100644 (file)
                } \
                if (child == 0) { \
                        if (_metadata->setup_completed && !fixture_name##_teardown_parent && \
-                                       __sync_bool_compare_and_swap(teardown, false, true)) \
+                                       !__atomic_test_and_set(teardown, __ATOMIC_RELAXED)) \
                                fixture_name##_teardown(_metadata, self, variant->data); \
                        _exit(0); \
                } \
                if (_metadata->setup_completed && fixture_name##_teardown_parent && \
-                               __sync_bool_compare_and_swap(teardown, false, true)) \
+                               !__atomic_test_and_set(teardown, __ATOMIC_RELAXED)) \
                        fixture_name##_teardown(_metadata, self, variant->data); \
                munmap(teardown, sizeof(*teardown)); \
                if (self && fixture_name##_teardown_parent) \