TOOLS
内核版本: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)
发表评论