1*aa963bcbSAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0
2*aa963bcbSAndrii Nakryiko /* Copyright (c) 2022 Facebook */
3*aa963bcbSAndrii Nakryiko 
4*aa963bcbSAndrii Nakryiko #include "vmlinux.h"
5*aa963bcbSAndrii Nakryiko #include <bpf/bpf_helpers.h>
6*aa963bcbSAndrii Nakryiko #include <bpf/bpf_tracing.h>
7*aa963bcbSAndrii Nakryiko 
8*aa963bcbSAndrii Nakryiko const volatile int my_pid;
9*aa963bcbSAndrii Nakryiko 
10*aa963bcbSAndrii Nakryiko bool abc1_called;
11*aa963bcbSAndrii Nakryiko bool abc2_called;
12*aa963bcbSAndrii Nakryiko bool custom1_called;
13*aa963bcbSAndrii Nakryiko bool custom2_called;
14*aa963bcbSAndrii Nakryiko bool kprobe1_called;
15*aa963bcbSAndrii Nakryiko bool xyz_called;
16*aa963bcbSAndrii Nakryiko 
17*aa963bcbSAndrii Nakryiko SEC("abc")
abc1(void * ctx)18*aa963bcbSAndrii Nakryiko int abc1(void *ctx)
19*aa963bcbSAndrii Nakryiko {
20*aa963bcbSAndrii Nakryiko 	abc1_called = true;
21*aa963bcbSAndrii Nakryiko 	return 0;
22*aa963bcbSAndrii Nakryiko }
23*aa963bcbSAndrii Nakryiko 
24*aa963bcbSAndrii Nakryiko SEC("abc/whatever")
abc2(void * ctx)25*aa963bcbSAndrii Nakryiko int abc2(void *ctx)
26*aa963bcbSAndrii Nakryiko {
27*aa963bcbSAndrii Nakryiko 	abc2_called = true;
28*aa963bcbSAndrii Nakryiko 	return 0;
29*aa963bcbSAndrii Nakryiko }
30*aa963bcbSAndrii Nakryiko 
31*aa963bcbSAndrii Nakryiko SEC("custom")
custom1(void * ctx)32*aa963bcbSAndrii Nakryiko int custom1(void *ctx)
33*aa963bcbSAndrii Nakryiko {
34*aa963bcbSAndrii Nakryiko 	custom1_called = true;
35*aa963bcbSAndrii Nakryiko 	return 0;
36*aa963bcbSAndrii Nakryiko }
37*aa963bcbSAndrii Nakryiko 
38*aa963bcbSAndrii Nakryiko SEC("custom/something")
custom2(void * ctx)39*aa963bcbSAndrii Nakryiko int custom2(void *ctx)
40*aa963bcbSAndrii Nakryiko {
41*aa963bcbSAndrii Nakryiko 	custom2_called = true;
42*aa963bcbSAndrii Nakryiko 	return 0;
43*aa963bcbSAndrii Nakryiko }
44*aa963bcbSAndrii Nakryiko 
45*aa963bcbSAndrii Nakryiko SEC("kprobe")
kprobe1(void * ctx)46*aa963bcbSAndrii Nakryiko int kprobe1(void *ctx)
47*aa963bcbSAndrii Nakryiko {
48*aa963bcbSAndrii Nakryiko 	kprobe1_called = true;
49*aa963bcbSAndrii Nakryiko 	return 0;
50*aa963bcbSAndrii Nakryiko }
51*aa963bcbSAndrii Nakryiko 
52*aa963bcbSAndrii Nakryiko SEC("xyz/blah")
xyz(void * ctx)53*aa963bcbSAndrii Nakryiko int xyz(void *ctx)
54*aa963bcbSAndrii Nakryiko {
55*aa963bcbSAndrii Nakryiko 	int whatever;
56*aa963bcbSAndrii Nakryiko 
57*aa963bcbSAndrii Nakryiko 	/* use sleepable helper, custom handler should set sleepable flag */
58*aa963bcbSAndrii Nakryiko 	bpf_copy_from_user(&whatever, sizeof(whatever), NULL);
59*aa963bcbSAndrii Nakryiko 	xyz_called = true;
60*aa963bcbSAndrii Nakryiko 	return 0;
61*aa963bcbSAndrii Nakryiko }
62*aa963bcbSAndrii Nakryiko 
63*aa963bcbSAndrii Nakryiko char _license[] SEC("license") = "GPL";
64