根据BPF Performance Tools一书,我正在尝试使用Linux中的bpftrace制作自定义bpf程序。我试图从路径linux/kernel/sched/sched.h包含一些文件。如何包含它们? (不仅是/include文件夹,还是Linux中的linux/kernel/*文件夹?)

我正在尝试合并#include/kernel/sched/sched.h以便使用“struct rq”。

我的程序示例是:

#!/usr/local/bin/bpftrace

#include <kernel/sched/sched.h>

kprobe:load_balance
{
     $rq = (struct rq *)arg1;
     printf("-------------------\n");
     printf("\n");
     printf("load_balance: %s pid: %d\n", comm, pid);
     printf("-------------------\n");
}

最佳答案

该 header 未​​公开,因此如果要使用它或其任何字段,则必须在自己的程序中复制rq结构定义。

bpftrace的示例中已经存在此类定义副本,例如 struct cfs_rq_partial

09-27 23:01