TOOLS

2023-05-26 发布 0条评论

内核版本:5.19.0
说明:本博客为学习笔记,仅做记录用。

bpf_tracing.h

BPF_PROG

bpf中PROG实现,以宏定义形式给出
源码:tools/lib/bpf/bpf_tracing.h#L425

#define BPF_PROG(name, args...)                            \
name(unsigned long long *ctx);                            \
static __attribute__((always_inline)) typeof(name(0))                \ // 返回值
____##name(unsigned long long *ctx, ##args);                    \  // 实际函数名
typeof(name(0)) name(unsigned long long *ctx)                    \
{                                        \
    _Pragma("GCC diagnostic push")                        \
    _Pragma("GCC diagnostic ignored \"-Wint-conversion\"")            \
    return ____##name(___bpf_ctx_cast(args));                \   // 真正执行内容
    _Pragma("GCC diagnostic pop")                        \
}                                        \
static __attribute__((always_inline)) typeof(name(0))                \
____##name(unsigned long long *ctx, ##args)

发表评论