xref: /linux/tools/testing/selftests/bpf/progs/struct_ops_autocreate2.c (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
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 Zingerman int 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 Zingerman int 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