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 Nakryiko int 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 Nakryiko int 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 Nakryiko int 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