问题标签 [bcc-bpf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
109 浏览

python - EBPF 访问固定表

如果在我的 python bcc 程序中我将信息存储在固定地图中,我如何从单独的 python 程序访问它?

所以我从参考指南中得到了这张固定地图:

我已经尝试像普通表一样访问它,但我得到了一个 raise key 错误。没有任何文档,但我发现这个我不太了解的示例https://github.com/iovisor/bcc/blame/master/examples/cpp/UseExternalMap.cc

0 投票
1 回答
60 浏览

ebpf - 尝试运行 BPF 程序时缺少右括号和引号

我的代码不断收到这个丢失的终止字符错误。我的目标是逐字打印字符串。这是代码。

这是我不断遇到的终止错误。我确信引号很好,但我不确定此时我的错误在哪里。

xt>

0 投票
1 回答
132 浏览

c - BPF map 查找元素个数

如何找到BPF映射中的元素数量?我在密件抄送参考指南中找不到任何有用的信息。

0 投票
1 回答
30 浏览

ebpf - 尝试分隔字符串并使用密件抄送打印时注册错误

我想将一些字符串分开并一一打印出来,但由于这些错误,这似乎几乎是不可能的。尝试将 const char str[] 更改为 const char *str 似乎只是给我带来了操作码 00 错误。看来我正朝着正确的方向前进,但只需要帮助将这些行一一打印出来。这是在在线编译器上运行的代码,以查看其输出的样子String Parser online IDE

这是我看到的错误,尝试使用指针而不是 char 数组只会给我带来操作码 00 错误。尝试 #pragma unroll 似乎也不能真正解决问题。我想知道是否有解决这个问题的方法,我只是没有看到。一个值得注意的错误在这里接近尾声:R4 bitwise operator |= on pointer prohibited

0 投票
1 回答
40 浏览

linux-kernel - 有人能解释一下 biolatency tool (bcc) 测量的确切延迟是多少吗?

是吗:

  1. 虚拟文件系统调用块 IO 层到它向块设备驱动程序提交请求之间的时间?
  2. 从向块 io 层提交请求到从磁盘为请求提供服务的时间之间的时间?
0 投票
0 回答
71 浏览

ebpf - bpf_attach_kprobe() 可以指定要附加的函数的内核模块名称吗?

我有一个案例,相同的函数出现在不同的内核模块中,在 /proc/kallsyms 中,例如,

address1 t 函数 [module1] address2 t 函数 [module2]

两个模块都加载在同一台机器上。然后我想用 ebpf 跟踪函数。

bpftrace kprobe 无法指定模块名称。

bpftrace -lv 'kprobe:function'

确实列出了 2 个探测器,但如果我运行 'bpftrace -e 'kprobe:function {...}'

它只连接 1 个探头。似乎它只附上了找到的第一个......

查看bcc 中的 libbpf.c, perf 事件 open syscall 似乎只接受函数名作为字符串,而不接受模块名或地址本身

在最新的 linux 内核 src 代码中,kprobe trace似乎具有支持函数名称和地址以及模块的数据结构,但实现时没有考虑模块。

实际上,Dtrace fbt 探针具有格式 provider:module:function,但是与 Dtrace 语法非常相似的 bpftrace 在 kprobe/kretprobe 提供程序中没有模块信息。

是因为 bcc 和内核 ebpf 不支持模块名称吗?

0 投票
1 回答
276 浏览

bpf - 将字符串发送到 BPF Map Space 并打印出来

我有一个小 txt 文件,我想在这里写给 BPF。这是我的 BPF 的 python 代码的样子,但我现在无法打印出任何东西。我一直以加载程序失败告终:带有一堆寄存器错误的无效参数。截至目前,我的字符串基本上说你好,世界,嗨

这是Python代码:

我在这个 pastebin 中链接了错误,因为它太长了: BPF 错误

一个值得注意的错误是提到检测到无限循环,这是我需要检查的。

0 投票
0 回答
122 浏览

python - 如何通过 pid 获取 task_struct

我正在尝试在密件抄送程序中通过 pid 获取 task_struct,我使用find_task_by_vpid但它得到一个错误:

这是我的代码:

谁能告诉我如何解决问题或找到另一种获取 task_struct 的方法?

0 投票
1 回答
114 浏览

bpf - 将字符串发送回 BPF 代码并返回用户空间时是否存在字符串大小限制?

我在这里通过 BPF Char Array 通过我的 BPF 代码发送这句话:

jmommyijsadifjasdijfa,你好,世界

当我打印出我的输出时,我似乎只得到这个输出

杰莫米伊

我似乎达到了某种字符串大小限制。有没有办法超过这个字符串大小限制并打印整个字符串?

这是我的 BPF 代码的样子:

这是我的 py 文件:

0 投票
1 回答
97 浏览

bpf - 尝试计算 BPF 中字符串中正确的字符数

我正在尝试计算 BPF 中传入的指针字符串,但我留下了这个我无法理解的非常长的错误。我基本上是在尝试在 BPF 中重新创建 strlen 来计算我传入的字符串 * 的大小。错误中有趣的区域可以在这里看到:

R1 最小值超出处理的允许内存范围 2353 insns(限制 1000000) max_states_per_insn 1 total_states 242 peak_states 242 mark_read 2

关于如何解决其他问题的任何想法?

这是我写的代码:

这是我在主 BPF 函数中调用的辅助函数。

粘贴箱错误