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