Create and load a struct_ops map with a large number of struct_ops programs to generate trampolines taking a size over multiple pages. The map includes 40 programs. Their trampolines takes 6.6k+, more than 1.5 pages, on x86. Signed-off-by: Kui-Feng Lee <thinker.li@gmail.com> Link: https://lore.kernel.org/r/20240224223418.526631-4-thinker.li@gmail.com Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
102 lines
1.4 KiB
C
102 lines
1.4 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
|
|
#include <vmlinux.h>
|
|
#include <bpf/bpf_helpers.h>
|
|
#include <bpf/bpf_tracing.h>
|
|
#include "../bpf_testmod/bpf_testmod.h"
|
|
|
|
char _license[] SEC("license") = "GPL";
|
|
|
|
#define TRAMP(x) \
|
|
SEC("struct_ops/tramp_" #x) \
|
|
int BPF_PROG(tramp_ ## x, int a) \
|
|
{ \
|
|
return a; \
|
|
}
|
|
|
|
TRAMP(1)
|
|
TRAMP(2)
|
|
TRAMP(3)
|
|
TRAMP(4)
|
|
TRAMP(5)
|
|
TRAMP(6)
|
|
TRAMP(7)
|
|
TRAMP(8)
|
|
TRAMP(9)
|
|
TRAMP(10)
|
|
TRAMP(11)
|
|
TRAMP(12)
|
|
TRAMP(13)
|
|
TRAMP(14)
|
|
TRAMP(15)
|
|
TRAMP(16)
|
|
TRAMP(17)
|
|
TRAMP(18)
|
|
TRAMP(19)
|
|
TRAMP(20)
|
|
TRAMP(21)
|
|
TRAMP(22)
|
|
TRAMP(23)
|
|
TRAMP(24)
|
|
TRAMP(25)
|
|
TRAMP(26)
|
|
TRAMP(27)
|
|
TRAMP(28)
|
|
TRAMP(29)
|
|
TRAMP(30)
|
|
TRAMP(31)
|
|
TRAMP(32)
|
|
TRAMP(33)
|
|
TRAMP(34)
|
|
TRAMP(35)
|
|
TRAMP(36)
|
|
TRAMP(37)
|
|
TRAMP(38)
|
|
TRAMP(39)
|
|
TRAMP(40)
|
|
|
|
#define F_TRAMP(x) .tramp_ ## x = (void *)tramp_ ## x
|
|
|
|
SEC(".struct_ops.link")
|
|
struct bpf_testmod_ops multi_pages = {
|
|
F_TRAMP(1),
|
|
F_TRAMP(2),
|
|
F_TRAMP(3),
|
|
F_TRAMP(4),
|
|
F_TRAMP(5),
|
|
F_TRAMP(6),
|
|
F_TRAMP(7),
|
|
F_TRAMP(8),
|
|
F_TRAMP(9),
|
|
F_TRAMP(10),
|
|
F_TRAMP(11),
|
|
F_TRAMP(12),
|
|
F_TRAMP(13),
|
|
F_TRAMP(14),
|
|
F_TRAMP(15),
|
|
F_TRAMP(16),
|
|
F_TRAMP(17),
|
|
F_TRAMP(18),
|
|
F_TRAMP(19),
|
|
F_TRAMP(20),
|
|
F_TRAMP(21),
|
|
F_TRAMP(22),
|
|
F_TRAMP(23),
|
|
F_TRAMP(24),
|
|
F_TRAMP(25),
|
|
F_TRAMP(26),
|
|
F_TRAMP(27),
|
|
F_TRAMP(28),
|
|
F_TRAMP(29),
|
|
F_TRAMP(30),
|
|
F_TRAMP(31),
|
|
F_TRAMP(32),
|
|
F_TRAMP(33),
|
|
F_TRAMP(34),
|
|
F_TRAMP(35),
|
|
F_TRAMP(36),
|
|
F_TRAMP(37),
|
|
F_TRAMP(38),
|
|
F_TRAMP(39),
|
|
F_TRAMP(40),
|
|
};
|