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>
8e91d280cSNaveen N. Rao #include "bpf_misc.h"
9c5d420c3SAndrii Nakryiko 
10c5d420c3SAndrii Nakryiko char _license[] SEC("license") = "GPL";
11c5d420c3SAndrii Nakryiko 
12c5d420c3SAndrii Nakryiko long hits = 0;
13c5d420c3SAndrii Nakryiko 
14c5d420c3SAndrii Nakryiko SEC("tp/syscalls/sys_enter_getpgid")
bench_trigger_tp(void * ctx)15c5d420c3SAndrii Nakryiko int bench_trigger_tp(void *ctx)
16c5d420c3SAndrii Nakryiko {
17c5d420c3SAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
18c5d420c3SAndrii Nakryiko 	return 0;
19c5d420c3SAndrii Nakryiko }
20c5d420c3SAndrii Nakryiko 
21c5d420c3SAndrii Nakryiko SEC("raw_tp/sys_enter")
BPF_PROG(bench_trigger_raw_tp,struct pt_regs * regs,long id)22c5d420c3SAndrii Nakryiko int BPF_PROG(bench_trigger_raw_tp, struct pt_regs *regs, long id)
23c5d420c3SAndrii Nakryiko {
24c5d420c3SAndrii Nakryiko 	if (id == __NR_getpgid)
25c5d420c3SAndrii Nakryiko 		__sync_add_and_fetch(&hits, 1);
26c5d420c3SAndrii Nakryiko 	return 0;
27c5d420c3SAndrii Nakryiko }
28c5d420c3SAndrii Nakryiko 
29e91d280cSNaveen N. Rao SEC("kprobe/" SYS_PREFIX "sys_getpgid")
bench_trigger_kprobe(void * ctx)30c5d420c3SAndrii Nakryiko int bench_trigger_kprobe(void *ctx)
31c5d420c3SAndrii Nakryiko {
32c5d420c3SAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
33c5d420c3SAndrii Nakryiko 	return 0;
34c5d420c3SAndrii Nakryiko }
35c5d420c3SAndrii Nakryiko 
36e91d280cSNaveen N. Rao SEC("fentry/" SYS_PREFIX "sys_getpgid")
bench_trigger_fentry(void * ctx)37c5d420c3SAndrii Nakryiko int bench_trigger_fentry(void *ctx)
38c5d420c3SAndrii Nakryiko {
39c5d420c3SAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
40c5d420c3SAndrii Nakryiko 	return 0;
41c5d420c3SAndrii Nakryiko }
42c5d420c3SAndrii Nakryiko 
43e91d280cSNaveen N. Rao SEC("fentry.s/" SYS_PREFIX "sys_getpgid")
bench_trigger_fentry_sleep(void * ctx)44e68a1445SAlexei Starovoitov int bench_trigger_fentry_sleep(void *ctx)
45e68a1445SAlexei Starovoitov {
46e68a1445SAlexei Starovoitov 	__sync_add_and_fetch(&hits, 1);
47e68a1445SAlexei Starovoitov 	return 0;
48e68a1445SAlexei Starovoitov }
49e68a1445SAlexei Starovoitov 
50e91d280cSNaveen N. Rao SEC("fmod_ret/" SYS_PREFIX "sys_getpgid")
bench_trigger_fmodret(void * ctx)51c5d420c3SAndrii Nakryiko int bench_trigger_fmodret(void *ctx)
52c5d420c3SAndrii Nakryiko {
53c5d420c3SAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
54c5d420c3SAndrii Nakryiko 	return -22;
55c5d420c3SAndrii Nakryiko }
56d41bc48bSAndrii Nakryiko 
57*39f8dc43SAlan Maguire SEC("uprobe")
bench_trigger_uprobe(void * ctx)58d41bc48bSAndrii Nakryiko int bench_trigger_uprobe(void *ctx)
59d41bc48bSAndrii Nakryiko {
60d41bc48bSAndrii Nakryiko 	__sync_add_and_fetch(&hits, 1);
61d41bc48bSAndrii Nakryiko 	return 0;
62d41bc48bSAndrii Nakryiko }
63