lkml.org 
[lkml]   [2020]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 31/91] perf record: Move side band evlist setup to separate routine
    Date
    From: Arnaldo Carvalho de Melo <acme@redhat.com>

    It is quite big by now, move that code to a separate
    record__setup_sb_evlist() routine.

    Suggested-by: Jiri Olsa <jolsa@redhat.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Song Liu <songliubraving@fb.com>
    Link: http://lore.kernel.org/lkml/20200429131106.27974-9-acme@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/builtin-record.c | 71 +++++++++++++++++++++----------------
    1 file changed, 41 insertions(+), 30 deletions(-)

    diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
    index bb5b4d2fc32b..cfb9a69a42dd 100644
    --- a/tools/perf/builtin-record.c
    +++ b/tools/perf/builtin-record.c
    @@ -1446,6 +1446,44 @@ static int record__process_signal_event(union perf_event *event __maybe_unused,
    return 0;
    }

    +static int record__setup_sb_evlist(struct record *rec)
    +{
    + struct record_opts *opts = &rec->opts;
    +
    + if (rec->sb_evlist != NULL) {
    + /*
    + * We get here if --switch-output-event populated the
    + * sb_evlist, so associate a callback that will send a SIGUSR2
    + * to the main thread.
    + */
    + evlist__set_cb(rec->sb_evlist, record__process_signal_event, rec);
    + rec->thread_id = pthread_self();
    + }
    +
    + if (!opts->no_bpf_event) {
    + if (rec->sb_evlist == NULL) {
    + rec->sb_evlist = evlist__new();
    +
    + if (rec->sb_evlist == NULL) {
    + pr_err("Couldn't create side band evlist.\n.");
    + return -1;
    + }
    + }
    +
    + if (evlist__add_bpf_sb_event(rec->sb_evlist, &rec->session->header.env)) {
    + pr_err("Couldn't ask for PERF_RECORD_BPF_EVENT side band events.\n.");
    + return -1;
    + }
    + }
    +
    + if (perf_evlist__start_sb_thread(rec->sb_evlist, &rec->opts.target)) {
    + pr_debug("Couldn't start the BPF side band thread:\nBPF programs starting from now on won't be annotatable\n");
    + opts->no_bpf_event = true;
    + }
    +
    + return 0;
    +}
    +
    static int __cmd_record(struct record *rec, int argc, const char **argv)
    {
    int err;
    @@ -1590,36 +1628,9 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
    goto out_child;
    }

    - if (rec->sb_evlist != NULL) {
    - /*
    - * We get here if --switch-output-event populated the
    - * sb_evlist, so associate a callback that will send a SIGUSR2
    - * to the main thread.
    - */
    - evlist__set_cb(rec->sb_evlist, record__process_signal_event, rec);
    - rec->thread_id = pthread_self();
    - }
    -
    - if (!opts->no_bpf_event) {
    - if (rec->sb_evlist == NULL) {
    - rec->sb_evlist = evlist__new();
    -
    - if (rec->sb_evlist == NULL) {
    - pr_err("Couldn't create side band evlist.\n.");
    - goto out_child;
    - }
    - }
    -
    - if (evlist__add_bpf_sb_event(rec->sb_evlist, &session->header.env)) {
    - pr_err("Couldn't ask for PERF_RECORD_BPF_EVENT side band events.\n.");
    - goto out_child;
    - }
    - }
    -
    - if (perf_evlist__start_sb_thread(rec->sb_evlist, &rec->opts.target)) {
    - pr_debug("Couldn't start the BPF side band thread:\nBPF programs starting from now on won't be annotatable\n");
    - opts->no_bpf_event = true;
    - }
    + err = record__setup_sb_evlist(rec);
    + if (err)
    + goto out_child;

    err = record__synthesize(rec, false);
    if (err < 0)
    --
    2.21.1
    \
     
     \ /
      Last update: 2020-05-06 17:25    [W:2.296 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site