首页 > 解决方案 > 如何在两个内核空间 BPF 程序之间共享 BPF 映射?

问题描述

在我提出我的问题之前;我已经阅读了之前提出的不同 ebpf 程序类型之间的地图共享 问题,该问题似乎没有回答我的问题。

现在,我正在做的是,我有两个 BPF 程序,一个用于 XDP,另一个用于 TC(无用户空间程序)。我在 TC 程序中创建了地图并将其固定到全局命名空间

struct bpf_elf_map cnt_map __section("maps") = {
    .type           = BPF_MAP_TYPE_ARRAY,
    .size_key       = sizeof(uint32_t),
    .size_value     = sizeof(uint32_t),
    .pinning        = PIN_GLOBAL_NS,
    .max_elem       = 2,
};

现在,我想在我的 XDP 代码中访问同一个地图。该文档说可以使用 获取固定对象BPF_OBJ_GET,但我能找到的只是用户空间版本。

所以,我需要知道,两个内核空间 BPF 程序如何共享一个映射?如果BPF_OBJ_GET可以获得固定对象(在我的情况下是地图),那么如何?或者还有其他方法吗?

非常感谢如何访问其他内核空间 BPF 程序中的固定对象的代码示例,因为我是 XDP/BPF 或 tc/BPF 的新手。

谢谢。

标签: kernelbpfebpfxdp-bpf

解决方案


推荐阅读