在 "xdp ebpf SEC("tracepoint/xdp/xdp_devmap_xmit")" 什么是 xdp_devmap_xmit -- 这个跟踪是否意味着某些内核函数的陷阱处理程序代码启动
In "xdp ebpf SEC("tracepoint/xdp/xdp_devmap_xmit")" what is xdp_devmap_xmit -- is this trace means trap handler code start for some kernel function
我有 ebpf xdp 程序,其功能带有 elf 部分
SEC("tracepoint/xdp/xdp_devmap_xmit")
- 我想知道上面是哪个内核函数的钩子
- 什么是
tracepoint/xdp/xdp_devmap_xmit
所以问题是
上面的 SEC
elf 部分是否使我的 ebpf 程序成为 XDP 程序?
所以如果它是真的那么在 tracepoint/
里面 tracepoint/xdp/xdp_devmap_xmit
还有哪些其他选项可用。我可以看到 xdp
显然在 tracepoint/
中可用,因为 tracepoint/[xdp]/xdp_dexmap_xmit
显然可用并且那里有示例程序和 |谁能解释一下 tracepoint/ 中还有哪些选项可用?我可以制作自定义跟踪点吗
对于我在内核中的一些功能
章节名称指的是什么?
and what is tracepoint/xdp/xdp_devmap_xmit
tracepoint/xdp/xdp_devmap_xmit
是这个 BPF 程序的 ELF 部分的名称。加载程序(此处为 libbpf)将使用此部分名称来了解它是哪种 BPF 程序类型,以及在这种情况下,将其附加到何处。
tracepoint
类型的 BPF 程序的部分名称采用以下格式:
tracepoint/<category>/<name>
name
是跟踪点本身的名称。跟踪点按类别组织。您可以使用 perf list '<category>:*'
列出类别的所有跟踪点。例如,对于 XDP:
$ sudo ./perf list 'xdp:*'
List of pre-defined events (to be used in -e):
xdp:mem_connect [Tracepoint event]
xdp:mem_disconnect [Tracepoint event]
xdp:mem_return_failed [Tracepoint event]
xdp:xdp_bulk_tx [Tracepoint event]
xdp:xdp_cpumap_enqueue [Tracepoint event]
xdp:xdp_cpumap_kthread [Tracepoint event]
xdp:xdp_devmap_xmit [Tracepoint event]
xdp:xdp_exception [Tracepoint event]
xdp:xdp_redirect [Tracepoint event]
xdp:xdp_redirect_err [Tracepoint event]
xdp:xdp_redirect_map [Tracepoint event]
xdp:xdp_redirect_map_err [Tracepoint event]
这个跟踪点是什么?
I like to know in above is this a hook for which kernel function
您可以通过以下方式获取有关该跟踪点的信息:
$ cat /sys/kernel/debug/tracing/events/xdp/xdp_devmap_xmit/format
name: xdp_devmap_xmit
ID: 467
format:
field:unsigned short common_type; offset:0; size:2; signed:0;
field:unsigned char common_flags; offset:2; size:1; signed:0;
field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
field:int common_pid; offset:4; size:4; signed:1;
field:int map_id; offset:8; size:4; signed:1;
field:u32 act; offset:12; size:4; signed:0;
field:u32 map_index; offset:16; size:4; signed:0;
field:int drops; offset:20; size:4; signed:1;
field:int sent; offset:24; size:4; signed:1;
field:int from_ifindex; offset:28; size:4; signed:1;
field:int to_ifindex; offset:32; size:4; signed:1;
field:int err; offset:36; size:4; signed:1;
print fmt: "ndo_xdp_xmit map_id=%d map_index=%d action=%s sent=%d drops=%d from_ifindex=%d to_ifindex=%d err=%d", REC->map_id, REC->map_index, __print_symbolic(REC->act, { 0, "ABORTED" }, { 1, "DROP" }, { 2, "PASS" }, { 3, "TX" }, { 4, "REDIRECT" }, { -1, ((void *)0) }), REC->sent, REC->drops, REC->from_ifindex, REC->to_ifindex, REC->err
这个特定的跟踪点将跟踪函数 ndo_xdp_xmit
.
的执行
XDP 的 link 是什么?
does this above SEC elf section makes my ebpf program an XDP program?
不,此部分名称使您的 BPF 程序成为跟踪点程序。这是一个跟踪点程序,将跟踪 XDP 的接收挂钩的执行。
如何跟踪内核函数?
can I make custom tracepoint for my some function in kernel
跟踪点仅为内核中的特定点定义(例如上面的 XDP 接收挂钩)。为了能够跟踪大多数内核函数,您可能需要使用 kprobes BPF 程序。
我有 ebpf xdp 程序,其功能带有 elf 部分
SEC("tracepoint/xdp/xdp_devmap_xmit")
- 我想知道上面是哪个内核函数的钩子
- 什么是
tracepoint/xdp/xdp_devmap_xmit
所以问题是
上面的 SEC
elf 部分是否使我的 ebpf 程序成为 XDP 程序?
所以如果它是真的那么在 tracepoint/
里面 tracepoint/xdp/xdp_devmap_xmit
还有哪些其他选项可用。我可以看到 xdp
显然在 tracepoint/
中可用,因为 tracepoint/[xdp]/xdp_dexmap_xmit
显然可用并且那里有示例程序和 |谁能解释一下 tracepoint/ 中还有哪些选项可用?我可以制作自定义跟踪点吗
对于我在内核中的一些功能
章节名称指的是什么?
and what is tracepoint/xdp/xdp_devmap_xmit
tracepoint/xdp/xdp_devmap_xmit
是这个 BPF 程序的 ELF 部分的名称。加载程序(此处为 libbpf)将使用此部分名称来了解它是哪种 BPF 程序类型,以及在这种情况下,将其附加到何处。
tracepoint
类型的 BPF 程序的部分名称采用以下格式:
tracepoint/<category>/<name>
name
是跟踪点本身的名称。跟踪点按类别组织。您可以使用 perf list '<category>:*'
列出类别的所有跟踪点。例如,对于 XDP:
$ sudo ./perf list 'xdp:*'
List of pre-defined events (to be used in -e):
xdp:mem_connect [Tracepoint event]
xdp:mem_disconnect [Tracepoint event]
xdp:mem_return_failed [Tracepoint event]
xdp:xdp_bulk_tx [Tracepoint event]
xdp:xdp_cpumap_enqueue [Tracepoint event]
xdp:xdp_cpumap_kthread [Tracepoint event]
xdp:xdp_devmap_xmit [Tracepoint event]
xdp:xdp_exception [Tracepoint event]
xdp:xdp_redirect [Tracepoint event]
xdp:xdp_redirect_err [Tracepoint event]
xdp:xdp_redirect_map [Tracepoint event]
xdp:xdp_redirect_map_err [Tracepoint event]
这个跟踪点是什么?
I like to know in above is this a hook for which kernel function
您可以通过以下方式获取有关该跟踪点的信息:
$ cat /sys/kernel/debug/tracing/events/xdp/xdp_devmap_xmit/format
name: xdp_devmap_xmit
ID: 467
format:
field:unsigned short common_type; offset:0; size:2; signed:0;
field:unsigned char common_flags; offset:2; size:1; signed:0;
field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
field:int common_pid; offset:4; size:4; signed:1;
field:int map_id; offset:8; size:4; signed:1;
field:u32 act; offset:12; size:4; signed:0;
field:u32 map_index; offset:16; size:4; signed:0;
field:int drops; offset:20; size:4; signed:1;
field:int sent; offset:24; size:4; signed:1;
field:int from_ifindex; offset:28; size:4; signed:1;
field:int to_ifindex; offset:32; size:4; signed:1;
field:int err; offset:36; size:4; signed:1;
print fmt: "ndo_xdp_xmit map_id=%d map_index=%d action=%s sent=%d drops=%d from_ifindex=%d to_ifindex=%d err=%d", REC->map_id, REC->map_index, __print_symbolic(REC->act, { 0, "ABORTED" }, { 1, "DROP" }, { 2, "PASS" }, { 3, "TX" }, { 4, "REDIRECT" }, { -1, ((void *)0) }), REC->sent, REC->drops, REC->from_ifindex, REC->to_ifindex, REC->err
这个特定的跟踪点将跟踪函数 ndo_xdp_xmit
.
XDP 的 link 是什么?
does this above SEC elf section makes my ebpf program an XDP program?
不,此部分名称使您的 BPF 程序成为跟踪点程序。这是一个跟踪点程序,将跟踪 XDP 的接收挂钩的执行。
如何跟踪内核函数?
can I make custom tracepoint for my some function in kernel
跟踪点仅为内核中的特定点定义(例如上面的 XDP 接收挂钩)。为了能够跟踪大多数内核函数,您可能需要使用 kprobes BPF 程序。