• Song Liu's avatar
    perf evlist: Introduce side band thread · 657ee553
    Song Liu authored
    This patch introduces side band thread that captures extended
    information for events like PERF_RECORD_BPF_EVENT.
    
    This new thread uses its own evlist that uses ring buffer with very low
    watermark for lower latency.
    
    To use side band thread, we need to:
    
    1. add side band event(s) by calling perf_evlist__add_sb_event();
    2. calls perf_evlist__start_sb_thread();
    3. at the end of perf run, perf_evlist__stop_sb_thread().
    
    In the next patch, we use this thread to handle PERF_RECORD_BPF_EVENT.
    
    Committer notes:
    
    Add fix by Jiri Olsa for when te sb_tread can't get started and then at
    the end the stop_sb_thread() segfaults when joining the (non-existing)
    thread.
    
    That can happen when running 'perf top' or 'perf record' as a normal
    user, for instance.
    
    Further checks need to be done on top of this to more graciously handle
    these possible failure scenarios.
    Signed-off-by: default avatarSong Liu <songliubraving@fb.com>
    Reviewed-by: default avatarJiri Olsa <jolsa@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    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>
    Link: http://lkml.kernel.org/r/20190312053051.2690567-15-songliubraving@fb.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    657ee553
builtin-record.c 58.3 KB