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