mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
bpf: Add support for tracing_multi link fdinfo
Adding tracing_multi link fdinfo support with following output: pos: 0 flags: 02000000 mnt_id: 19 ino: 3087 link_type: tracing_multi link_id: 9 prog_tag: 599ba0e317244f86 prog_id: 94 attach_type: 59 cnt: 10 obj-id btf-id cookie func 1 91593 8 bpf_fentry_test1+0x4/0x10 1 91595 9 bpf_fentry_test2+0x4/0x10 1 91596 7 bpf_fentry_test3+0x4/0x20 1 91597 5 bpf_fentry_test4+0x4/0x20 1 91598 4 bpf_fentry_test5+0x4/0x20 1 91599 2 bpf_fentry_test6+0x4/0x20 1 91600 3 bpf_fentry_test7+0x4/0x10 1 91601 1 bpf_fentry_test8+0x4/0x10 1 91602 10 bpf_fentry_test9+0x4/0x10 1 91594 6 bpf_fentry_test10+0x4/0x10 Signed-off-by: Jiri Olsa <jolsa@kernel.org> Link: https://lore.kernel.org/r/20260606123955.345967-17-jolsa@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
ba042ed644
commit
8abecdafd5
@@ -3665,9 +3665,39 @@ static void bpf_tracing_multi_link_dealloc(struct bpf_link *link)
|
||||
kvfree(tr_link);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static void bpf_tracing_multi_show_fdinfo(const struct bpf_link *link,
|
||||
struct seq_file *seq)
|
||||
{
|
||||
struct bpf_tracing_multi_link *tr_link =
|
||||
container_of(link, struct bpf_tracing_multi_link, link);
|
||||
bool has_cookies = !!tr_link->cookies;
|
||||
|
||||
seq_printf(seq, "attach_type:\t%u\n", tr_link->link.attach_type);
|
||||
seq_printf(seq, "cnt:\t%u\n", tr_link->nodes_cnt);
|
||||
|
||||
seq_printf(seq, "%s\t %s\t %s\t %s\n", "obj-id", "btf-id", "cookie", "func");
|
||||
for (int i = 0; i < tr_link->nodes_cnt; i++) {
|
||||
struct bpf_tracing_multi_node *mnode = &tr_link->nodes[i];
|
||||
u32 btf_id, obj_id;
|
||||
|
||||
bpf_trampoline_unpack_key(mnode->trampoline->key, &obj_id, &btf_id);
|
||||
seq_printf(seq, "%u\t %u\t %llu\t %pS\n",
|
||||
obj_id, btf_id,
|
||||
has_cookies ? tr_link->cookies[i] : 0,
|
||||
(void *) mnode->trampoline->ip);
|
||||
|
||||
cond_resched();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static const struct bpf_link_ops bpf_tracing_multi_link_lops = {
|
||||
.release = bpf_tracing_multi_link_release,
|
||||
.dealloc_deferred = bpf_tracing_multi_link_dealloc,
|
||||
#ifdef CONFIG_PROC_FS
|
||||
.show_fdinfo = bpf_tracing_multi_show_fdinfo,
|
||||
#endif
|
||||
};
|
||||
|
||||
static int ids_cmp_r(const void *pa, const void *pb, const void *priv __maybe_unused)
|
||||
|
||||
Reference in New Issue
Block a user