71 lines · c
1// SPDX-License-Identifier: GPL-2.02/* 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 8int urand_pid;9 10int urand_read_without_sema_call_cnt;11int urand_read_without_sema_buf_sz_sum;12 13SEC("usdt/./urandom_read:urand:read_without_sema")14int 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 25int urand_read_with_sema_call_cnt;26int urand_read_with_sema_buf_sz_sum;27 28SEC("usdt/./urandom_read:urand:read_with_sema")29int 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 40int urandlib_read_without_sema_call_cnt;41int urandlib_read_without_sema_buf_sz_sum;42 43SEC("usdt/./liburandom_read.so:urandlib:read_without_sema")44int 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 55int urandlib_read_with_sema_call_cnt;56int urandlib_read_with_sema_buf_sz_sum;57 58SEC("usdt/./liburandom_read.so:urandlib:read_with_sema")59int 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 70char _license[] SEC("license") = "GPL";71