1*c7aec81bSMenglong Dong // SPDX-License-Identifier: GPL-2.0
2*c7aec81bSMenglong Dong // Copyright (c) 2017 Facebook
3*c7aec81bSMenglong Dong 
4*c7aec81bSMenglong Dong #include "vmlinux.h"
5*c7aec81bSMenglong Dong #include <bpf/bpf_helpers.h>
6*c7aec81bSMenglong Dong #include <bpf/bpf_tracing.h>
7*c7aec81bSMenglong Dong #include <bpf/bpf_core_read.h>
8*c7aec81bSMenglong Dong #include "bpf_misc.h"
9*c7aec81bSMenglong Dong 
10*c7aec81bSMenglong Dong int kprobe_res = 0;
11*c7aec81bSMenglong Dong int kretprobe_res = 0;
12*c7aec81bSMenglong Dong int uprobe_res = 0;
13*c7aec81bSMenglong Dong int uretprobe_res = 0;
14*c7aec81bSMenglong Dong int uprobe_byname_res = 0;
15*c7aec81bSMenglong Dong void *user_ptr = 0;
16*c7aec81bSMenglong Dong 
17*c7aec81bSMenglong Dong SEC("kprobe")
handle_kprobe(struct pt_regs * ctx)18*c7aec81bSMenglong Dong int handle_kprobe(struct pt_regs *ctx)
19*c7aec81bSMenglong Dong {
20*c7aec81bSMenglong Dong 	kprobe_res = 1;
21*c7aec81bSMenglong Dong 	return 0;
22*c7aec81bSMenglong Dong }
23*c7aec81bSMenglong Dong 
24*c7aec81bSMenglong Dong SEC("kretprobe")
handle_kretprobe(struct pt_regs * ctx)25*c7aec81bSMenglong Dong int handle_kretprobe(struct pt_regs *ctx)
26*c7aec81bSMenglong Dong {
27*c7aec81bSMenglong Dong 	kretprobe_res = 2;
28*c7aec81bSMenglong Dong 	return 0;
29*c7aec81bSMenglong Dong }
30*c7aec81bSMenglong Dong 
31*c7aec81bSMenglong Dong SEC("uprobe")
handle_uprobe(struct pt_regs * ctx)32*c7aec81bSMenglong Dong int handle_uprobe(struct pt_regs *ctx)
33*c7aec81bSMenglong Dong {
34*c7aec81bSMenglong Dong 	uprobe_res = 3;
35*c7aec81bSMenglong Dong 	return 0;
36*c7aec81bSMenglong Dong }
37*c7aec81bSMenglong Dong 
38*c7aec81bSMenglong Dong SEC("uretprobe")
handle_uretprobe(struct pt_regs * ctx)39*c7aec81bSMenglong Dong int handle_uretprobe(struct pt_regs *ctx)
40*c7aec81bSMenglong Dong {
41*c7aec81bSMenglong Dong 	uretprobe_res = 4;
42*c7aec81bSMenglong Dong 	return 0;
43*c7aec81bSMenglong Dong }
44*c7aec81bSMenglong Dong 
45*c7aec81bSMenglong Dong SEC("uprobe")
handle_uprobe_byname(struct pt_regs * ctx)46*c7aec81bSMenglong Dong int handle_uprobe_byname(struct pt_regs *ctx)
47*c7aec81bSMenglong Dong {
48*c7aec81bSMenglong Dong 	uprobe_byname_res = 5;
49*c7aec81bSMenglong Dong 	return 0;
50*c7aec81bSMenglong Dong }
51*c7aec81bSMenglong Dong 
52*c7aec81bSMenglong Dong 
53*c7aec81bSMenglong Dong char _license[] SEC("license") = "GPL";
54