15712174cSAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0 25712174cSAndrii Nakryiko /* Copyright (c) 2020 Facebook */ 35712174cSAndrii Nakryiko 45712174cSAndrii Nakryiko #include "vmlinux.h" 55712174cSAndrii Nakryiko #include <bpf/bpf_helpers.h> 65712174cSAndrii Nakryiko #include <bpf/bpf_tracing.h> 75712174cSAndrii Nakryiko #include <bpf/bpf_core_read.h> 85712174cSAndrii Nakryiko 95712174cSAndrii Nakryiko bool prog1_called = false; 105712174cSAndrii Nakryiko bool prog2_called = false; 115712174cSAndrii Nakryiko bool prog3_called = false; 125712174cSAndrii Nakryiko 135712174cSAndrii Nakryiko SEC("raw_tp/sys_enter") prog1(const void * ctx)145712174cSAndrii Nakryikoint prog1(const void *ctx) 155712174cSAndrii Nakryiko { 165712174cSAndrii Nakryiko prog1_called = true; 175712174cSAndrii Nakryiko return 0; 185712174cSAndrii Nakryiko } 195712174cSAndrii Nakryiko 205712174cSAndrii Nakryiko SEC("raw_tp/sys_exit") prog2(const void * ctx)215712174cSAndrii Nakryikoint prog2(const void *ctx) 225712174cSAndrii Nakryiko { 235712174cSAndrii Nakryiko prog2_called = true; 245712174cSAndrii Nakryiko return 0; 255712174cSAndrii Nakryiko } 265712174cSAndrii Nakryiko 275712174cSAndrii Nakryiko struct fake_kernel_struct { 285712174cSAndrii Nakryiko int whatever; 295712174cSAndrii Nakryiko } __attribute__((preserve_access_index)); 305712174cSAndrii Nakryiko 315712174cSAndrii Nakryiko SEC("fentry/unexisting-kprobe-will-fail-if-loaded") prog3(const void * ctx)325712174cSAndrii Nakryikoint prog3(const void *ctx) 335712174cSAndrii Nakryiko { 345712174cSAndrii Nakryiko struct fake_kernel_struct *fake = (void *)ctx; 355712174cSAndrii Nakryiko fake->whatever = 123; 365712174cSAndrii Nakryiko prog3_called = true; 375712174cSAndrii Nakryiko return 0; 385712174cSAndrii Nakryiko } 395712174cSAndrii Nakryiko 405712174cSAndrii Nakryiko char _license[] SEC("license") = "GPL"; 41