mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 01:24:33 +00:00
3124591f68
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>
68 lines
1.2 KiB
C
68 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#undef TRACE_SYSTEM
|
|
#define TRACE_SYSTEM bpf_test_run
|
|
|
|
#if !defined(_TRACE_BPF_TEST_RUN_H) || defined(TRACE_HEADER_MULTI_READ)
|
|
#define _TRACE_BPF_TEST_RUN_H
|
|
|
|
#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),
|
|
|
|
TP_ARGS(err),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(int, err)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->err = *err;
|
|
),
|
|
|
|
TP_printk("bpf_test_finish with err=%d", __entry->err)
|
|
);
|
|
|
|
#ifdef DEFINE_EVENT_WRITABLE
|
|
#undef BPF_TEST_RUN_DEFINE_EVENT
|
|
#define BPF_TEST_RUN_DEFINE_EVENT(template, call, proto, args, size) \
|
|
DEFINE_EVENT_WRITABLE(template, call, PARAMS(proto), \
|
|
PARAMS(args), size)
|
|
#else
|
|
#undef BPF_TEST_RUN_DEFINE_EVENT
|
|
#define BPF_TEST_RUN_DEFINE_EVENT(template, call, proto, args, size) \
|
|
DEFINE_EVENT(template, call, PARAMS(proto), PARAMS(args))
|
|
#endif
|
|
|
|
BPF_TEST_RUN_DEFINE_EVENT(bpf_test_finish, bpf_test_finish,
|
|
|
|
TP_PROTO(int *err),
|
|
|
|
TP_ARGS(err),
|
|
|
|
sizeof(int)
|
|
);
|
|
|
|
#endif
|
|
|
|
/* This part must be outside protection */
|
|
#include <trace/define_trace.h>
|