Как я могу включить / kernel / sched / * в программу BPF? - PullRequest
2 голосов
/ 12 апреля 2020

Я пытаюсь создать пользовательскую программу bpf с bpftrace в Linux, согласно книге BPF Performance Tools. Я попытался включить некоторые файлы из пути linux / kernel / sched / sched.h. Как я могу их включить? (не только папка / include, но и папка linux / kernel / * в Linux?)

Я пытаюсь включить #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");
}

1 Ответ

2 голосов
/ 12 апреля 2020

Этот заголовок не отображается, поэтому вам придется скопировать определение структуры rq в вашу собственную программу, если вы хотите использовать его или любое из его полей.

Копии этого вида определения уже присутствуют в примерах bpftrace, например, для struct cfs_rq_partial.

...