headers 无法在 eBPF 代码的内核级别上工作
headers not working at a kernel level on eBPF code
所以我正在 eBPF 上开发一些东西。
我需要使用 unistd.h header 因为我想使用睡眠功能。
然而,当我输入
时,我意识到
#include <unistd.h>
这些 header 未包含在内,我会收到一条错误消息:
warning : implicit delcaration of function 'sleep' is invalid in C99 [-Wimplicit-Function-declaration] sleep (1);
我认为我在代码的其他地方做错了,所以我尝试将 header 包含在教程的示例中,但它也没有那样工作。
因此,根据我在下面附加的代码,我尝试在消息发布之前延迟一秒钟。
有没有人遇到过同样的问题并且找到了在 c 代码中使用 header 的方法?
如果有人能给我一些帮助,我将不胜感激!
万分感谢!
我尝试更新内核并将所有 header 文件移动到 ёusr/local/includeё
目录,因为它在互联网上说这是编译器首先检查 headers 但仍然没有工作的地方。
这是我试过但没有用的代码。
from bcc import BPF
BPF(text = 'int kprobe__sys_clone(void *ctx)
{
#include <unistd.h>
sleep(1);
bpf_trace_printk("Hello World!\n");
return 0;
}
').trace_print()
我想你想要的是,https://github.com/iovisor/bcc/blob/master/examples/networking/xdp/xdp_drop_count.py
在该代码中搜索 "sleep"。
正如@Ctx 所说,该函数在触发克隆系统调用时发生。 sleep() 在那里没有意义,你也不能在内核调用 sleep() 中这样做。
你可能想了解上面的例子,看看它是如何设置间隔来打印东西的。希望对您有所帮助。
所以我正在 eBPF 上开发一些东西。
我需要使用 unistd.h header 因为我想使用睡眠功能。
然而,当我输入
时,我意识到#include <unistd.h>
这些 header 未包含在内,我会收到一条错误消息:
warning : implicit delcaration of function 'sleep' is invalid in C99 [-Wimplicit-Function-declaration] sleep (1);
我认为我在代码的其他地方做错了,所以我尝试将 header 包含在教程的示例中,但它也没有那样工作。
因此,根据我在下面附加的代码,我尝试在消息发布之前延迟一秒钟。
有没有人遇到过同样的问题并且找到了在 c 代码中使用 header 的方法?
如果有人能给我一些帮助,我将不胜感激!
万分感谢!
我尝试更新内核并将所有 header 文件移动到 ёusr/local/includeё 目录,因为它在互联网上说这是编译器首先检查 headers 但仍然没有工作的地方。
这是我试过但没有用的代码。
from bcc import BPF
BPF(text = 'int kprobe__sys_clone(void *ctx)
{
#include <unistd.h>
sleep(1);
bpf_trace_printk("Hello World!\n");
return 0;
}
').trace_print()
我想你想要的是,https://github.com/iovisor/bcc/blob/master/examples/networking/xdp/xdp_drop_count.py 在该代码中搜索 "sleep"。
正如@Ctx 所说,该函数在触发克隆系统调用时发生。 sleep() 在那里没有意义,你也不能在内核调用 sleep() 中这样做。
你可能想了解上面的例子,看看它是如何设置间隔来打印东西的。希望对您有所帮助。