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