1*5712174cSAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0 2*5712174cSAndrii Nakryiko /* Copyright (c) 2020 Facebook */ 3*5712174cSAndrii Nakryiko 4*5712174cSAndrii Nakryiko #include "vmlinux.h" 5*5712174cSAndrii Nakryiko #include <bpf/bpf_helpers.h> 6*5712174cSAndrii Nakryiko #include <bpf/bpf_tracing.h> 7*5712174cSAndrii Nakryiko #include <bpf/bpf_core_read.h> 8*5712174cSAndrii Nakryiko 9*5712174cSAndrii Nakryiko bool prog1_called = false; 10*5712174cSAndrii Nakryiko bool prog2_called = false; 11*5712174cSAndrii Nakryiko bool prog3_called = false; 12*5712174cSAndrii Nakryiko 13*5712174cSAndrii Nakryiko SEC("raw_tp/sys_enter") prog1(const void * ctx)14*5712174cSAndrii Nakryikoint prog1(const void *ctx) 15*5712174cSAndrii Nakryiko { 16*5712174cSAndrii Nakryiko prog1_called = true; 17*5712174cSAndrii Nakryiko return 0; 18*5712174cSAndrii Nakryiko } 19*5712174cSAndrii Nakryiko 20*5712174cSAndrii Nakryiko SEC("raw_tp/sys_exit") prog2(const void * ctx)21*5712174cSAndrii Nakryikoint prog2(const void *ctx) 22*5712174cSAndrii Nakryiko { 23*5712174cSAndrii Nakryiko prog2_called = true; 24*5712174cSAndrii Nakryiko return 0; 25*5712174cSAndrii Nakryiko } 26*5712174cSAndrii Nakryiko 27*5712174cSAndrii Nakryiko struct fake_kernel_struct { 28*5712174cSAndrii Nakryiko int whatever; 29*5712174cSAndrii Nakryiko } __attribute__((preserve_access_index)); 30*5712174cSAndrii Nakryiko 31*5712174cSAndrii Nakryiko SEC("fentry/unexisting-kprobe-will-fail-if-loaded") prog3(const void * ctx)32*5712174cSAndrii Nakryikoint prog3(const void *ctx) 33*5712174cSAndrii Nakryiko { 34*5712174cSAndrii Nakryiko struct fake_kernel_struct *fake = (void *)ctx; 35*5712174cSAndrii Nakryiko fake->whatever = 123; 36*5712174cSAndrii Nakryiko prog3_called = true; 37*5712174cSAndrii Nakryiko return 0; 38*5712174cSAndrii Nakryiko } 39*5712174cSAndrii Nakryiko 40*5712174cSAndrii Nakryiko char _license[] SEC("license") = "GPL"; 41