xref: /linux/tools/testing/selftests/bpf/progs/struct_ops_multi_pages.c (revision 4b132aacb0768ac1e652cf517097ea6f237214b9)
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
3 #include <vmlinux.h>
4 #include <bpf/bpf_helpers.h>
5 #include <bpf/bpf_tracing.h>
6 #include "../bpf_testmod/bpf_testmod.h"
7 
8 char _license[] SEC("license") = "GPL";
9 
10 #define TRAMP(x) \
11 	SEC("struct_ops/tramp_" #x)		\
12 	int BPF_PROG(tramp_ ## x, int a)	\
13 	{					\
14 		return a;			\
15 	}
16 
17 TRAMP(1)
18 TRAMP(2)
19 TRAMP(3)
20 TRAMP(4)
21 TRAMP(5)
22 TRAMP(6)
23 TRAMP(7)
24 TRAMP(8)
25 TRAMP(9)
26 TRAMP(10)
27 TRAMP(11)
28 TRAMP(12)
29 TRAMP(13)
30 TRAMP(14)
31 TRAMP(15)
32 TRAMP(16)
33 TRAMP(17)
34 TRAMP(18)
35 TRAMP(19)
36 TRAMP(20)
37 TRAMP(21)
38 TRAMP(22)
39 TRAMP(23)
40 TRAMP(24)
41 TRAMP(25)
42 TRAMP(26)
43 TRAMP(27)
44 TRAMP(28)
45 TRAMP(29)
46 TRAMP(30)
47 TRAMP(31)
48 TRAMP(32)
49 TRAMP(33)
50 TRAMP(34)
51 TRAMP(35)
52 TRAMP(36)
53 TRAMP(37)
54 TRAMP(38)
55 TRAMP(39)
56 TRAMP(40)
57 
58 #define F_TRAMP(x) .tramp_ ## x = (void *)tramp_ ## x
59 
60 SEC(".struct_ops.link")
61 struct bpf_testmod_ops multi_pages = {
62 	F_TRAMP(1),
63 	F_TRAMP(2),
64 	F_TRAMP(3),
65 	F_TRAMP(4),
66 	F_TRAMP(5),
67 	F_TRAMP(6),
68 	F_TRAMP(7),
69 	F_TRAMP(8),
70 	F_TRAMP(9),
71 	F_TRAMP(10),
72 	F_TRAMP(11),
73 	F_TRAMP(12),
74 	F_TRAMP(13),
75 	F_TRAMP(14),
76 	F_TRAMP(15),
77 	F_TRAMP(16),
78 	F_TRAMP(17),
79 	F_TRAMP(18),
80 	F_TRAMP(19),
81 	F_TRAMP(20),
82 	F_TRAMP(21),
83 	F_TRAMP(22),
84 	F_TRAMP(23),
85 	F_TRAMP(24),
86 	F_TRAMP(25),
87 	F_TRAMP(26),
88 	F_TRAMP(27),
89 	F_TRAMP(28),
90 	F_TRAMP(29),
91 	F_TRAMP(30),
92 	F_TRAMP(31),
93 	F_TRAMP(32),
94 	F_TRAMP(33),
95 	F_TRAMP(34),
96 	F_TRAMP(35),
97 	F_TRAMP(36),
98 	F_TRAMP(37),
99 	F_TRAMP(38),
100 	F_TRAMP(39),
101 	F_TRAMP(40),
102 };
103