• Yafang Shao's avatar
    bpftool: Show perf link info · 88d61607
    Yafang Shao authored
    Enhance bpftool to display comprehensive information about exposed
    perf_event links, covering uprobe, kprobe, tracepoint, and generic perf
    event. The resulting output will include the following details:
    
    $ tools/bpf/bpftool/bpftool link show
    3: perf_event  prog 14
            event software:cpu-clock
            bpf_cookie 0
            pids perf_event(19483)
    4: perf_event  prog 14
            event hw-cache:LLC-load-misses
            bpf_cookie 0
            pids perf_event(19483)
    5: perf_event  prog 14
            event hardware:cpu-cycles
            bpf_cookie 0
            pids perf_event(19483)
    6: perf_event  prog 19
            tracepoint sched_switch
            bpf_cookie 0
            pids tracepoint(20947)
    7: perf_event  prog 26
            uprobe /home/dev/waken/bpf/uprobe/a.out+0x1338
            bpf_cookie 0
            pids uprobe(21973)
    8: perf_event  prog 27
            uretprobe /home/dev/waken/bpf/uprobe/a.out+0x1338
            bpf_cookie 0
            pids uprobe(21973)
    10: perf_event  prog 43
            kprobe ffffffffb70a9660 kernel_clone
            bpf_cookie 0
            pids kprobe(35275)
    11: perf_event  prog 41
            kretprobe ffffffffb70a9660 kernel_clone
            bpf_cookie 0
            pids kprobe(35275)
    
    $ tools/bpf/bpftool/bpftool link show -j
    [{"id":3,"type":"perf_event","prog_id":14,"event_type":"software","event_config":"cpu-clock","bpf_cookie":0,"pids":[{"pid":19483,"comm":"perf_event"}]},{"id":4,"type":"perf_event","prog_id":14,"event_type":"hw-cache","event_config":"LLC-load-misses","bpf_cookie":0,"pids":[{"pid":19483,"comm":"perf_event"}]},{"id":5,"type":"perf_event","prog_id":14,"event_type":"hardware","event_config":"cpu-cycles","bpf_cookie":0,"pids":[{"pid":19483,"comm":"perf_event"}]},{"id":6,"type":"perf_event","prog_id":19,"tracepoint":"sched_switch","bpf_cookie":0,"pids":[{"pid":20947,"comm":"tracepoint"}]},{"id":7,"type":"perf_event","prog_id":26,"retprobe":false,"file":"/home/dev/waken/bpf/uprobe/a.out","offset":4920,"bpf_cookie":0,"pids":[{"pid":21973,"comm":"uprobe"}]},{"id":8,"type":"perf_event","prog_id":27,"retprobe":true,"file":"/home/dev/waken/bpf/uprobe/a.out","offset":4920,"bpf_cookie":0,"pids":[{"pid":21973,"comm":"uprobe"}]},{"id":10,"type":"perf_event","prog_id":43,"retprobe":false,"addr":18446744072485508704,"func":"kernel_clone","offset":0,"bpf_cookie":0,"pids":[{"pid":35275,"comm":"kprobe"}]},{"id":11,"type":"perf_event","prog_id":41,"retprobe":true,"addr":18446744072485508704,"func":"kernel_clone","offset":0,"bpf_cookie":0,"pids":[{"pid":35275,"comm":"kprobe"}]}]
    
    For generic perf events, the displayed information in bpftool is limited to
    the type and configuration, while other attributes such as sample_period,
    sample_freq, etc., are not included.
    
    The kernel function address won't be exposed if it is not permitted by
    kptr_restrict. The result as follows when kptr_restrict is 2.
    
    $ tools/bpf/bpftool/bpftool link show
    3: perf_event  prog 14
            event software:cpu-clock
    4: perf_event  prog 14
            event hw-cache:LLC-load-misses
    5: perf_event  prog 14
            event hardware:cpu-cycles
    6: perf_event  prog 19
            tracepoint sched_switch
    7: perf_event  prog 26
            uprobe /home/dev/waken/bpf/uprobe/a.out+0x1338
    8: perf_event  prog 27
            uretprobe /home/dev/waken/bpf/uprobe/a.out+0x1338
    10: perf_event  prog 43
            kprobe kernel_clone
    11: perf_event  prog 41
            kretprobe kernel_clone
    Signed-off-by: default avatarYafang Shao <laoar.shao@gmail.com>
    Reviewed-by: default avatarQuentin Monnet <quentin@isovalent.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Link: https://lore.kernel.org/r/20230709025630.3735-11-laoar.shao@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    88d61607
link.c 25 KB