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