1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* Copyright (c) 2022 Meta Platforms, Inc. and affiliates. */ |
3 | |
4 | #include "vmlinux.h" |
5 | #include <bpf/bpf_helpers.h> |
6 | #include <bpf/usdt.bpf.h> |
7 | |
8 | int urand_pid; |
9 | |
10 | int urand_read_without_sema_call_cnt; |
11 | int urand_read_without_sema_buf_sz_sum; |
12 | |
13 | SEC("usdt/./urandom_read:urand:read_without_sema" ) |
14 | int BPF_USDT(urand_read_without_sema, int iter_num, int iter_cnt, int buf_sz) |
15 | { |
16 | if (urand_pid != (bpf_get_current_pid_tgid() >> 32)) |
17 | return 0; |
18 | |
19 | __sync_fetch_and_add(&urand_read_without_sema_call_cnt, 1); |
20 | __sync_fetch_and_add(&urand_read_without_sema_buf_sz_sum, buf_sz); |
21 | |
22 | return 0; |
23 | } |
24 | |
25 | int urand_read_with_sema_call_cnt; |
26 | int urand_read_with_sema_buf_sz_sum; |
27 | |
28 | SEC("usdt/./urandom_read:urand:read_with_sema" ) |
29 | int BPF_USDT(urand_read_with_sema, int iter_num, int iter_cnt, int buf_sz) |
30 | { |
31 | if (urand_pid != (bpf_get_current_pid_tgid() >> 32)) |
32 | return 0; |
33 | |
34 | __sync_fetch_and_add(&urand_read_with_sema_call_cnt, 1); |
35 | __sync_fetch_and_add(&urand_read_with_sema_buf_sz_sum, buf_sz); |
36 | |
37 | return 0; |
38 | } |
39 | |
40 | int urandlib_read_without_sema_call_cnt; |
41 | int urandlib_read_without_sema_buf_sz_sum; |
42 | |
43 | SEC("usdt/./liburandom_read.so:urandlib:read_without_sema" ) |
44 | int BPF_USDT(urandlib_read_without_sema, int iter_num, int iter_cnt, int buf_sz) |
45 | { |
46 | if (urand_pid != (bpf_get_current_pid_tgid() >> 32)) |
47 | return 0; |
48 | |
49 | __sync_fetch_and_add(&urandlib_read_without_sema_call_cnt, 1); |
50 | __sync_fetch_and_add(&urandlib_read_without_sema_buf_sz_sum, buf_sz); |
51 | |
52 | return 0; |
53 | } |
54 | |
55 | int urandlib_read_with_sema_call_cnt; |
56 | int urandlib_read_with_sema_buf_sz_sum; |
57 | |
58 | SEC("usdt/./liburandom_read.so:urandlib:read_with_sema" ) |
59 | int BPF_USDT(urandlib_read_with_sema, int iter_num, int iter_cnt, int buf_sz) |
60 | { |
61 | if (urand_pid != (bpf_get_current_pid_tgid() >> 32)) |
62 | return 0; |
63 | |
64 | __sync_fetch_and_add(&urandlib_read_with_sema_call_cnt, 1); |
65 | __sync_fetch_and_add(&urandlib_read_with_sema_buf_sz_sum, buf_sz); |
66 | |
67 | return 0; |
68 | } |
69 | |
70 | char _license[] SEC("license" ) = "GPL" ; |
71 | |