首页 > 解决方案 > 推送到 bpf 映射堆栈类型

问题描述

我正在寻找一种将数据从用户空间发送到 Linux 中的 bpf 程序的方法。我在用户空间中使用 libbpf,在内核中的 bpf 程序中使用 bpf_helpers。我现在可以通过 ringbuf 和其他方法将数据从内核发送给用户。但我想为此使用堆栈和队列。我在用户空间中找不到处理队列或堆栈的函数,我仍然感到困惑。我的问题是:如何使用堆栈或队列将数据从用户空间发送到 bpf 程序并在我的 bpf 程序中获取它,就像我们bpf['queue'].push在用户空间和queue.peek(&val);bpf 程序中在 bcc 中所做的那样。

感谢您的任何帮助!

标签: linuxlinux-kernelbpfebpf

解决方案


您应该使用通常的bpf_map_update_elembpf_map_lookup_elem函数用于BPF_MAP_TYPE_QUEUEBPF_MAP_TYPE_STACK映射。

您可以在内核源代码中找到几个示例:


推荐阅读