1238106Sdes// SPDX-License-Identifier: GPL-2.0 2238106Sdes#include <linux/bpf.h> 3238106Sdes#include <bpf/bpf_helpers.h> 4238106Sdes#include <bpf/bpf_tracing.h> 5238106Sdes#include <stdbool.h> 6238106Sdes 7238106Sdes#ifdef ENABLE_ATOMICS_TESTS 8238106Sdesbool skip_tests __attribute((__section__(".data"))) = false; 9238106Sdes#else 10238106Sdesbool skip_tests = true; 11238106Sdes#endif 12238106Sdes 13238106SdesSEC("fentry/bpf_fentry_test1") 14238106Sdesint BPF_PROG(sub, int x) 15238106Sdes{ 16238106Sdes#ifdef ENABLE_ATOMICS_TESTS 17238106Sdes int a = 0; 18238106Sdes int b = __sync_fetch_and_add(&a, 1); 19238106Sdes /* b is certainly 0 here. Can the verifier tell? */ 20238106Sdes while (b) 21238106Sdes continue; 22238106Sdes#endif 23238106Sdes return 0; 24266114Sdes} 25266114Sdes