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