1*37086bfdSBrendan Jackman // SPDX-License-Identifier: GPL-2.0 2*37086bfdSBrendan Jackman #include <linux/bpf.h> 3*37086bfdSBrendan Jackman #include <bpf/bpf_helpers.h> 4*37086bfdSBrendan Jackman #include <bpf/bpf_tracing.h> 5*37086bfdSBrendan Jackman #include <stdbool.h> 6*37086bfdSBrendan Jackman 7*37086bfdSBrendan Jackman #ifdef ENABLE_ATOMICS_TESTS 8*37086bfdSBrendan Jackman bool skip_tests __attribute((__section__(".data"))) = false; 9*37086bfdSBrendan Jackman #else 10*37086bfdSBrendan Jackman bool skip_tests = true; 11*37086bfdSBrendan Jackman #endif 12*37086bfdSBrendan Jackman 13*37086bfdSBrendan Jackman SEC("fentry/bpf_fentry_test1") BPF_PROG(sub,int x)14*37086bfdSBrendan Jackmanint BPF_PROG(sub, int x) 15*37086bfdSBrendan Jackman { 16*37086bfdSBrendan Jackman #ifdef ENABLE_ATOMICS_TESTS 17*37086bfdSBrendan Jackman int a = 0; 18*37086bfdSBrendan Jackman int b = __sync_fetch_and_add(&a, 1); 19*37086bfdSBrendan Jackman /* b is certainly 0 here. Can the verifier tell? */ 20*37086bfdSBrendan Jackman while (b) 21*37086bfdSBrendan Jackman continue; 22*37086bfdSBrendan Jackman #endif 23*37086bfdSBrendan Jackman return 0; 24*37086bfdSBrendan Jackman } 25