【问题标题】:Accessing BPF maps from kernel space从内核空间访问 BPF 映射
【发布时间】:2022-01-14 08:30:24
【问题描述】:

我从 XDP 和 BPF 映射开始。

我知道要从用户空间访问 BPF 映射,我们使用 bpf_* 系统调用。例如,bpf_map_lookup_elem() 用于在用户空间程序中查找 BPF 映射的元素。但是,我注意到相同的系统调用也用于访问加载在内核上的 XDP 程序中的映射(参考。here)。

我假设这样的程序应该在内核空间中运行,因此有没有其他方法可以从内核空间访问这些 BPF 映射?还是 XDP 加载的程序也是用户空间的一部分,但只在内核中运行?

【问题讨论】:

    标签: linux kernel ebpf bpf xdp-bpf


    【解决方案1】:

    要从用户空间查找地图元素,您应该使用the bpf(2) syscall,以及命令BPF_MAP_LOOKUP_ELEM。 BPF 的主要用户空间库确实将此系统调用命令公开为bpf_map_lookup_elem()

    要从 BPF 程序中查找地图元素,您确实需要使用 bpf_map_lookup_elem BPF 助手。简而言之,BPF 助手是内核函数,您可以使用指令 call 从 BPF 字节码调用。

    尽管名称相同,但它们是不同的东西:第一个是库函数,第二个是 BPF 助手。

    【讨论】:

    • 知道了。谢谢!这就是我一直在寻找的。​​span>
    • 很高兴知道它有帮助!您可以通过单击左侧的复选标记来接受答案。这应该有助于参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2016-05-05
    相关资源
    最近更新 更多