1// SPDX-License-Identifier: GPL-2.0
2/* Copyright (c) 2023 Hengqi Chen */
3
4#include "vmlinux.h"
5#include <bpf/bpf_helpers.h>
6#include <bpf/bpf_tracing.h>
7
8pid_t my_pid = 0;
9
10int test1_result = 0;
11int test2_result = 0;
12int test3_result = 0;
13int test4_result = 0;
14
15SEC("uprobe/./liburandom_read.so:urandlib_api_sameoffset")
16int BPF_UPROBE(test1)
17{
18 pid_t pid = bpf_get_current_pid_tgid() >> 32;
19
20 if (pid != my_pid)
21 return 0;
22
23 test1_result = 1;
24 return 0;
25}
26
27SEC("uprobe/./liburandom_read.so:urandlib_api_sameoffset@LIBURANDOM_READ_1.0.0")
28int BPF_UPROBE(test2)
29{
30 pid_t pid = bpf_get_current_pid_tgid() >> 32;
31
32 if (pid != my_pid)
33 return 0;
34
35 test2_result = 1;
36 return 0;
37}
38
39SEC("uretprobe/./liburandom_read.so:urandlib_api_sameoffset@@LIBURANDOM_READ_2.0.0")
40int BPF_URETPROBE(test3, int ret)
41{
42 pid_t pid = bpf_get_current_pid_tgid() >> 32;
43
44 if (pid != my_pid)
45 return 0;
46
47 test3_result = ret;
48 return 0;
49}
50
51SEC("uprobe")
52int BPF_UPROBE(test4)
53{
54 pid_t pid = bpf_get_current_pid_tgid() >> 32;
55
56 if (pid != my_pid)
57 return 0;
58
59 test4_result = 1;
60 return 0;
61}
62

source code of linux/tools/testing/selftests/bpf/progs/test_uprobe.c