linux - 推送到 bpf 映射堆栈类型
问题描述
我正在寻找一种将数据从用户空间发送到 Linux 中的 bpf 程序的方法。我在用户空间中使用 libbpf,在内核中的 bpf 程序中使用 bpf_helpers。我现在可以通过 ringbuf 和其他方法将数据从内核发送给用户。但我想为此使用堆栈和队列。我在用户空间中找不到处理队列或堆栈的函数,我仍然感到困惑。我的问题是:如何使用堆栈或队列将数据从用户空间发送到 bpf 程序并在我的 bpf 程序中获取它,就像我们bpf['queue'].push
在用户空间和queue.peek(&val);
bpf 程序中在 bcc 中所做的那样。
感谢您的任何帮助!
解决方案
您应该使用通常的bpf_map_update_elem
和bpf_map_lookup_elem
函数用于BPF_MAP_TYPE_QUEUE
和BPF_MAP_TYPE_STACK
映射。
您可以在内核源代码中找到几个示例:
推荐阅读
- android - ConstraintLayout 组与层
- copy - 无法使用 docker 文件运行复制命令
- apache-spark - 如何解决火花“错误:缺少参数类型”中的此错误
- r - 用第二个数据框中定义的类别替换数据框列名称的公式
- swift - swift中嵌套的主要表达式
- pointers - 在函数式语言中,不变性的概念如何应用于内存中的地址?
- sql - 检查 BLOB 中 Oracle SQL 语句的表访问
- python - Python - 在字典中添加值
- mysql - MySQL CSV 导入的年份日期为 0018 无效日期
- c - 我不断收到有关传递参数的警告,使指针从整数而不进行强制转换