On Fri, Jun 6, 2025 at 8:03 AM Tao Chen <chen.dylane@xxxxxxxxx> wrote: > > After commit 1b715e1b0ec5 ("bpf: Support ->fill_link_info for perf_event") add > perf_event info, we can also show the info with the method of cat /proc/[fd]/fdinfo. > > kprobe fdinfo: > link_type: perf > link_id: 10 > prog_tag: bcf7977d3b93787c > prog_id: 20 > name: bpf_fentry_test1 > offset: 0 > missed: 0 > addr: ffffffffa28a2904 > event_type: kprobe > cookie: 3735928559 > > uprobe fdinfo: > link_type: perf > link_id: 13 > prog_tag: bcf7977d3b93787c > prog_id: 21 > name: /proc/self/exe > offset: 63dce4 > ref_ctr_offset: 33eee2a > event_type: uprobe > cookie: 3735928559 > > tracepoint fdinfo: > link_type: perf > link_id: 11 > prog_tag: bcf7977d3b93787c > prog_id: 22 > tp_name: sched_switch > event_type: tracepoint > cookie: 3735928559 > > perf_event fdinfo: > link_type: perf > link_id: 12 > prog_tag: bcf7977d3b93787c > prog_id: 23 > type: 1 > config: 2 > event_type: event > cookie: 3735928559 > > Signed-off-by: Tao Chen <chen.dylane@xxxxxxxxx> > --- > kernel/bpf/syscall.c | 118 +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 118 insertions(+) > > Change list: > - v1 -> v2: > - Andrii suggested: > 1. define event_type with string > 2. print offset and addr with hex > > - Jiri suggested: > 1. add ref_ctr_offset for uprobe > - v1: > https://lore.kernel.org/bpf/20250604163723.3175258-1-chen.dylane@xxxxxxxxx > > diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c > index 89d027cd7ca..928ff129087 100644 > --- a/kernel/bpf/syscall.c > +++ b/kernel/bpf/syscall.c > @@ -3795,6 +3795,31 @@ static int bpf_perf_link_fill_kprobe(const struct perf_event *event, > info->perf_event.kprobe.cookie = event->bpf_cookie; > return 0; > } > + > +static void bpf_perf_link_fdinfo_kprobe(const struct perf_event *event, > + struct seq_file *seq) > +{ > + const char *name; > + int err; > + u32 prog_id, type; > + u64 offset, addr; > + unsigned long missed; > + > + err = bpf_get_perf_event_info(event, &prog_id, &type, &name, > + &offset, &addr, &missed); > + if (err) > + return; > + > + seq_printf(seq, > + "name:\t%s\n" > + "offset:\t%llx\n" I used %#llx to have 0x prepended in front of hex values (here and in a few other places). That seems to be what we do in other fdinfo handlers. Applied to bpf-next, thanks. > + "missed:\t%lu\n" > + "addr:\t%llx\n" > + "event_type:\t%s\n" > + "cookie:\t%llu\n", > + name, offset, missed, addr, type == BPF_FD_TYPE_KRETPROBE ? > + "kretprobe" : "kprobe", event->bpf_cookie); > +} > #endif > > #ifdef CONFIG_UPROBE_EVENTS [...]