gpt4 book ai didi

c - header 在 eBPF 代码的内核级别不起作用

转载 作者:行者123 更新时间:2023-11-30 14:40:46 25 4
gpt4 key购买 nike

所以我正在 eBPF 上开发一些东西。

我需要使用 unistd.h header ,因为我想使用 sleep 函数。

但是,当我输入时,我意识到

#include <unistd.h>

这些 header 不会被包含在内,我会收到一条错误消息:

warning : implicit delcaration of function 'sleep' is invalid in C99 [-Wimplicit-Function-declaration] sleep (1);

我认为我在代码的其他地方做错了,所以我尝试将该 header 包含在教程的示例中,但它也不起作用。

因此,根据我在下面附加的代码,我尝试在发布消息之前延迟一秒钟。

有人遇到过同样的问题,并且以某种方式找到了在 C 代码中使用该 header 的方法吗?

如果有人能给我一些帮助,我将非常感激!

感谢一百万!

我尝试更新内核并将所有头文件移至 ёusr/local/includeё目录,因为网上说这是编译器首先检查头文件的地方,但仍然不起作用。

这是我尝试过但不起作用的代码。

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所说,该函数在触发clone系统调用时发生。那里的 sleep() 没有任何意义,你也不能在内核中调用 sleep() 来做到这一点。

您可能想了解上面的示例,看看它如何设置打印内容的间隔。希望有帮助。

关于c - header 在 eBPF 代码的内核级别不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55401204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com