xref: /linux/tools/testing/selftests/bpf/progs/trigger_bench.c (revision c5d420c32cb44fdd10d76f0f01bcd0b09383d0b5)
1*c5d420c3SAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0
2*c5d420c3SAndrii Nakryiko // Copyright (c) 2020 Facebook
3*c5d420c3SAndrii Nakryiko 
4*c5d420c3SAndrii Nakryiko #include <linux/bpf.h>
5*c5d420c3SAndrii Nakryiko #include <asm/unistd.h>
6*c5d420c3SAndrii Nakryiko #include <bpf/bpf_helpers.h>
7*c5d420c3SAndrii Nakryiko #include <bpf/bpf_tracing.h>
8*c5d420c3SAndrii Nakryiko 
9*c5d420c3SAndrii Nakryiko char _license[] SEC("license") = "GPL";
10*c5d420c3SAndrii Nakryiko 
11*c5d420c3SAndrii Nakryiko long hits = 0;
12*c5d420c3SAndrii Nakryiko 
13*c5d420c3SAndrii Nakryiko SEC("tp/syscalls/sys_enter_getpgid")
14*c5d420c3SAndrii Nakryiko int bench_trigger_tp(void *ctx)
15*c5d420c3SAndrii Nakryiko {
16*c5d420c3SAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
17*c5d420c3SAndrii Nakryiko 	return 0;
18*c5d420c3SAndrii Nakryiko }
19*c5d420c3SAndrii Nakryiko 
20*c5d420c3SAndrii Nakryiko SEC("raw_tp/sys_enter")
21*c5d420c3SAndrii Nakryiko int BPF_PROG(bench_trigger_raw_tp, struct pt_regs *regs, long id)
22*c5d420c3SAndrii Nakryiko {
23*c5d420c3SAndrii Nakryiko 	if (id == __NR_getpgid)
24*c5d420c3SAndrii Nakryiko 		__sync_add_and_fetch(&hits, 1);
25*c5d420c3SAndrii Nakryiko 	return 0;
26*c5d420c3SAndrii Nakryiko }
27*c5d420c3SAndrii Nakryiko 
28*c5d420c3SAndrii Nakryiko SEC("kprobe/__x64_sys_getpgid")
29*c5d420c3SAndrii Nakryiko int bench_trigger_kprobe(void *ctx)
30*c5d420c3SAndrii Nakryiko {
31*c5d420c3SAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
32*c5d420c3SAndrii Nakryiko 	return 0;
33*c5d420c3SAndrii Nakryiko }
34*c5d420c3SAndrii Nakryiko 
35*c5d420c3SAndrii Nakryiko SEC("fentry/__x64_sys_getpgid")
36*c5d420c3SAndrii Nakryiko int bench_trigger_fentry(void *ctx)
37*c5d420c3SAndrii Nakryiko {
38*c5d420c3SAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
39*c5d420c3SAndrii Nakryiko 	return 0;
40*c5d420c3SAndrii Nakryiko }
41*c5d420c3SAndrii Nakryiko 
42*c5d420c3SAndrii Nakryiko SEC("fmod_ret/__x64_sys_getpgid")
43*c5d420c3SAndrii Nakryiko int bench_trigger_fmodret(void *ctx)
44*c5d420c3SAndrii Nakryiko {
45*c5d420c3SAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
46*c5d420c3SAndrii Nakryiko 	return -22;
47*c5d420c3SAndrii Nakryiko }
48