162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci// Copyright (c) 2020 Facebook 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#include <linux/bpf.h> 562306a36Sopenharmony_ci#include <asm/unistd.h> 662306a36Sopenharmony_ci#include <bpf/bpf_helpers.h> 762306a36Sopenharmony_ci#include <bpf/bpf_tracing.h> 862306a36Sopenharmony_ci#include "bpf_misc.h" 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cichar _license[] SEC("license") = "GPL"; 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cilong hits = 0; 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ciSEC("tp/syscalls/sys_enter_getpgid") 1562306a36Sopenharmony_ciint bench_trigger_tp(void *ctx) 1662306a36Sopenharmony_ci{ 1762306a36Sopenharmony_ci __sync_add_and_fetch(&hits, 1); 1862306a36Sopenharmony_ci return 0; 1962306a36Sopenharmony_ci} 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciSEC("raw_tp/sys_enter") 2262306a36Sopenharmony_ciint BPF_PROG(bench_trigger_raw_tp, struct pt_regs *regs, long id) 2362306a36Sopenharmony_ci{ 2462306a36Sopenharmony_ci if (id == __NR_getpgid) 2562306a36Sopenharmony_ci __sync_add_and_fetch(&hits, 1); 2662306a36Sopenharmony_ci return 0; 2762306a36Sopenharmony_ci} 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ciSEC("kprobe/" SYS_PREFIX "sys_getpgid") 3062306a36Sopenharmony_ciint bench_trigger_kprobe(void *ctx) 3162306a36Sopenharmony_ci{ 3262306a36Sopenharmony_ci __sync_add_and_fetch(&hits, 1); 3362306a36Sopenharmony_ci return 0; 3462306a36Sopenharmony_ci} 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ciSEC("fentry/" SYS_PREFIX "sys_getpgid") 3762306a36Sopenharmony_ciint bench_trigger_fentry(void *ctx) 3862306a36Sopenharmony_ci{ 3962306a36Sopenharmony_ci __sync_add_and_fetch(&hits, 1); 4062306a36Sopenharmony_ci return 0; 4162306a36Sopenharmony_ci} 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciSEC("fentry.s/" SYS_PREFIX "sys_getpgid") 4462306a36Sopenharmony_ciint bench_trigger_fentry_sleep(void *ctx) 4562306a36Sopenharmony_ci{ 4662306a36Sopenharmony_ci __sync_add_and_fetch(&hits, 1); 4762306a36Sopenharmony_ci return 0; 4862306a36Sopenharmony_ci} 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ciSEC("fmod_ret/" SYS_PREFIX "sys_getpgid") 5162306a36Sopenharmony_ciint bench_trigger_fmodret(void *ctx) 5262306a36Sopenharmony_ci{ 5362306a36Sopenharmony_ci __sync_add_and_fetch(&hits, 1); 5462306a36Sopenharmony_ci return -22; 5562306a36Sopenharmony_ci} 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ciSEC("uprobe") 5862306a36Sopenharmony_ciint bench_trigger_uprobe(void *ctx) 5962306a36Sopenharmony_ci{ 6062306a36Sopenharmony_ci __sync_add_and_fetch(&hits, 1); 6162306a36Sopenharmony_ci return 0; 6262306a36Sopenharmony_ci} 63