The test sets a hardware breakpoint and uses a BPF program to suppress the side effects of a perf event sample, including I/O availability signals, SIGTRAPs, and decrementing the event counter limit, if the IP matches the expected value. Then the function with the breakpoint is executed multiple times to test that all effects behave as expected. Signed-off-by: Kyle Huey <khuey@kylehuey.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Acked-by: Song Liu <song@kernel.org> Acked-by: Jiri Olsa <jolsa@kernel.org> Acked-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/r/20240412015019.7060-8-khuey@kylehuey.com
15 lines
324 B
C
15 lines
324 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include "vmlinux.h"
|
|
#include <bpf/bpf_helpers.h>
|
|
#include <bpf/bpf_tracing.h>
|
|
|
|
uintptr_t ip;
|
|
|
|
SEC("perf_event")
|
|
int handler(struct bpf_perf_event_data *data)
|
|
{
|
|
/* Skip events that have the correct ip. */
|
|
return ip != PT_REGS_IP(&data->regs);
|
|
}
|
|
|
|
char _license[] SEC("license") = "GPL";
|