1*651d49f1SEduard Zingerman // SPDX-License-Identifier: GPL-2.0 2*651d49f1SEduard Zingerman 3*651d49f1SEduard Zingerman #include <linux/bpf.h> 4*651d49f1SEduard Zingerman #include <bpf/bpf_helpers.h> 5*651d49f1SEduard Zingerman #include <bpf/bpf_tracing.h> 6*651d49f1SEduard Zingerman 7*651d49f1SEduard Zingerman char _license[] SEC("license") = "GPL"; 8*651d49f1SEduard Zingerman 9*651d49f1SEduard Zingerman int test_1_result = 0; 10*651d49f1SEduard Zingerman 11*651d49f1SEduard Zingerman SEC("?struct_ops/test_1") BPF_PROG(foo)12*651d49f1SEduard Zingermanint BPF_PROG(foo) 13*651d49f1SEduard Zingerman { 14*651d49f1SEduard Zingerman test_1_result = 42; 15*651d49f1SEduard Zingerman return 0; 16*651d49f1SEduard Zingerman } 17*651d49f1SEduard Zingerman 18*651d49f1SEduard Zingerman SEC("?struct_ops/test_1") BPF_PROG(bar)19*651d49f1SEduard Zingermanint BPF_PROG(bar) 20*651d49f1SEduard Zingerman { 21*651d49f1SEduard Zingerman test_1_result = 24; 22*651d49f1SEduard Zingerman return 0; 23*651d49f1SEduard Zingerman } 24*651d49f1SEduard Zingerman 25*651d49f1SEduard Zingerman struct bpf_testmod_ops { 26*651d49f1SEduard Zingerman int (*test_1)(void); 27*651d49f1SEduard Zingerman }; 28*651d49f1SEduard Zingerman 29*651d49f1SEduard Zingerman SEC(".struct_ops.link") 30*651d49f1SEduard Zingerman struct bpf_testmod_ops testmod_1 = { 31*651d49f1SEduard Zingerman .test_1 = (void *)bar 32*651d49f1SEduard Zingerman }; 33