• Song Liu's avatar
    perf bpf: Save bpf_prog_info in a rbtree in perf_env · e4378f0c
    Song Liu authored
    bpf_prog_info contains information necessary to annotate bpf programs.
    
    This patch saves bpf_prog_info for bpf programs loaded in the system.
    
    Some big picture of the next few patches:
    
    To fully annotate BPF programs with source code mapping, 4 different
    informations are needed:
    
        1) PERF_RECORD_KSYMBOL
        2) PERF_RECORD_BPF_EVENT
        3) bpf_prog_info
        4) btf
    
    Before this set, 1) and 2) in the list are already saved to perf.data
    file. For BPF programs that are already loaded before perf run, 1) and 2)
    are synthesized by perf_event__synthesize_bpf_events(). For short living
    BPF programs, 1) and 2) are generated by kernel.
    
    This set handles 3) and 4) from the list. Again, it is necessary to handle
    existing BPF program and short living program separately.
    
    This patch handles 3) for exising BPF programs while synthesizing 1) and
    2) in perf_event__synthesize_bpf_events(). These data are stored in
    perf_env. The next patch saves these data from perf_env to perf.data as
    headers.
    
    Similarly, the two patches after the next saves 4) of existing BPF
    programs to perf_env and perf.data.
    
    Another patch later will handle 3) and 4) for short living BPF programs
    by monitoring 1) and 2) in a dedicate thread.
    Signed-off-by: default avatarSong Liu <songliubraving@fb.com>
    Reviewed-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stanislav Fomichev <sdf@google.com>
    Cc: kernel-team@fb.com
    Link: http://lkml.kernel.org/r/20190312053051.2690567-7-songliubraving@fb.com
    [ set env->bpf_progs.infos_cnt to zero in perf_env__purge_bpf() as noted by jolsa ]
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e4378f0c
session.c 61.6 KB