ebpf_exporter

Форк
0
/
usdt.bpf.c 
32 строки · 827.0 Байт
1
#include <vmlinux.h>
2
#include <bpf/bpf_helpers.h>
3
#include <bpf/usdt.bpf.h>
4
#include "maps.bpf.h"
5

6
struct call_t {
7
    char module[128];
8
    char function[128];
9
};
10

11
struct {
12
    __uint(type, BPF_MAP_TYPE_HASH);
13
    __uint(max_entries, 1024);
14
    __type(key, struct call_t);
15
    __type(value, u64);
16
} python_function_entries_total SEC(".maps");
17

18
SEC("usdt/python3:python:function__entry")
19
int BPF_USDT(do_count, void *arg0, void *arg1, void *arg2)
20
{
21
    struct call_t call = {};
22

23
    // https://docs.python.org/3/howto/instrumentation.html#available-static-markers
24
    bpf_probe_read_user_str(&call.module, sizeof(call.module), arg0);
25
    bpf_probe_read_user_str(&call.function, sizeof(call.function), arg1);
26

27
    increment_map(&python_function_entries_total, &call, 1);
28

29
    return 0;
30
}
31

32
char LICENSE[] SEC("license") = "GPL";
33

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.