mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
bpf: add bpf_modify_return_test_tp() kfunc triggering tracepoint
Add a simple bpf_modify_return_test_tp() kfunc, available to all program types, that is useful for various testing and benchmarking scenarios, as it allows to trigger most tracing BPF program types from BPF side, allowing to do complex testing and benchmarking scenarios. It is also attachable to for fmod_ret programs, making it a good and simple way to trigger fmod_ret program under test/benchmark. Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/r/20240326162151.3981687-6-andrii@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
b4ccf9158f
commit
3124591f68
@ -7,6 +7,23 @@
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
TRACE_EVENT(bpf_trigger_tp,
|
||||
|
||||
TP_PROTO(int nonce),
|
||||
|
||||
TP_ARGS(nonce),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(int, nonce)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->nonce = nonce;
|
||||
),
|
||||
|
||||
TP_printk("nonce %d", __entry->nonce)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(bpf_test_finish,
|
||||
|
||||
TP_PROTO(int *err),
|
||||
|
@ -2625,6 +2625,7 @@ BTF_ID_FLAGS(func, bpf_dynptr_is_null)
|
||||
BTF_ID_FLAGS(func, bpf_dynptr_is_rdonly)
|
||||
BTF_ID_FLAGS(func, bpf_dynptr_size)
|
||||
BTF_ID_FLAGS(func, bpf_dynptr_clone)
|
||||
BTF_ID_FLAGS(func, bpf_modify_return_test_tp)
|
||||
BTF_KFUNCS_END(common_btf_ids)
|
||||
|
||||
static const struct btf_kfunc_id_set common_kfunc_set = {
|
||||
|
@ -575,6 +575,13 @@ __bpf_kfunc int bpf_modify_return_test2(int a, int *b, short c, int d,
|
||||
return a + *b + c + d + (long)e + f + g;
|
||||
}
|
||||
|
||||
__bpf_kfunc int bpf_modify_return_test_tp(int nonce)
|
||||
{
|
||||
trace_bpf_trigger_tp(nonce);
|
||||
|
||||
return nonce;
|
||||
}
|
||||
|
||||
int noinline bpf_fentry_shadow_test(int a)
|
||||
{
|
||||
return a + 1;
|
||||
@ -622,6 +629,7 @@ __bpf_kfunc_end_defs();
|
||||
BTF_KFUNCS_START(bpf_test_modify_return_ids)
|
||||
BTF_ID_FLAGS(func, bpf_modify_return_test)
|
||||
BTF_ID_FLAGS(func, bpf_modify_return_test2)
|
||||
BTF_ID_FLAGS(func, bpf_modify_return_test_tp)
|
||||
BTF_ID_FLAGS(func, bpf_fentry_test1, KF_SLEEPABLE)
|
||||
BTF_KFUNCS_END(bpf_test_modify_return_ids)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user