Mar*_*ark 4 linux-kernel llvm-clang bpf ebpf
在运行一些示例时,samples/bpf我注意到bpf_printk输出带有一些额外的信息,例如:
telnet-470 [001] .N.. 419421.045894: 0x00000001: BPF command: 2
Run Code Online (Sandbox Code Playgroud)
BPF command: 2实际的字符串是传递给bpf_printkbpf 程序的,但其余的是什么?我假设这来自内核的 JIT ?
我在哪里可以仔细查看这些位的含义?谢谢。
在你的例子中:
telnet-470 [001] .N.. 419421.045894: 0x00000001: BPF command: 2
Run Code Online (Sandbox Code Playgroud)
telnet 是您当前任务的名称。470 是您当前任务的 PID。001 是运行任务的 CPU 编号。.N..,每个字符指的是一组选项(是否启用 irqs、调度选项、是否正在运行 hard/softirqs、级别preempt_disabled)。N意味着TIF_NEED_RESCHED和PREEMPT_NEED_RESCHED被设置。419421.045894 是一个时间戳。0x00000001是BPF 用于 ip 寄存器的假值。BPF command: 2 是你的消息。该bpf_trace_printk助手电话trace_printk,其格式在详细的文档ftrace(Output format部分)。假 ip 值在bpf_trace_printkhelper的原始提交中被注释。
正如 Qeole 在下面提到的,这种格式与 JIT 编译器(或 eBPF 基础架构)无关,而且 eBPF 助手不需要 JIT 编译,因为它们已经编译为内核源代码的一部分。
| 归档时间: |
|
| 查看次数: |
3652 次 |
| 最近记录: |