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