lkml.org 
[lkml]   [2017]   [May]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 31/37] perf intel-pt: Move code in intel_pt_synth_events() to simplify attr setting
    Date
    intel_pt_synth_events() uses the same attr structure to create each event.
    Move the code around a bit to simplify that.

    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    ---
    tools/perf/util/intel-pt.c | 45 ++++++++++++++++++++++-----------------------
    1 file changed, 22 insertions(+), 23 deletions(-)

    diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c
    index a20712e1ed28..ace79a405f98 100644
    --- a/tools/perf/util/intel-pt.c
    +++ b/tools/perf/util/intel-pt.c
    @@ -1997,6 +1997,25 @@ static int intel_pt_synth_events(struct intel_pt *pt,
    if (!id)
    id = 1;

    + if (pt->synth_opts.branches) {
    + attr.config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS;
    + attr.sample_period = 1;
    + attr.sample_type |= PERF_SAMPLE_ADDR;
    + err = intel_pt_synth_event(session, "branches", &attr, id);
    + if (err)
    + return err;
    + pt->sample_branches = true;
    + pt->branches_sample_type = attr.sample_type;
    + pt->branches_id = id;
    + id += 1;
    + attr.sample_type &= ~(u64)PERF_SAMPLE_ADDR;
    + }
    +
    + if (pt->synth_opts.callchain)
    + attr.sample_type |= PERF_SAMPLE_CALLCHAIN;
    + if (pt->synth_opts.last_branch)
    + attr.sample_type |= PERF_SAMPLE_BRANCH_STACK;
    +
    if (pt->synth_opts.instructions) {
    attr.config = PERF_COUNT_HW_INSTRUCTIONS;
    if (pt->synth_opts.period_type == PERF_ITRACE_PERIOD_NANOSECS)
    @@ -2004,10 +2023,6 @@ static int intel_pt_synth_events(struct intel_pt *pt,
    intel_pt_ns_to_ticks(pt, pt->synth_opts.period);
    else
    attr.sample_period = pt->synth_opts.period;
    - if (pt->synth_opts.callchain)
    - attr.sample_type |= PERF_SAMPLE_CALLCHAIN;
    - if (pt->synth_opts.last_branch)
    - attr.sample_type |= PERF_SAMPLE_BRANCH_STACK;
    err = intel_pt_synth_event(session, "instructions", &attr, id);
    if (err)
    return err;
    @@ -2017,13 +2032,11 @@ static int intel_pt_synth_events(struct intel_pt *pt,
    id += 1;
    }

    + attr.sample_type &= ~(u64)PERF_SAMPLE_PERIOD;
    + attr.sample_period = 1;
    +
    if (pt->synth_opts.transactions) {
    attr.config = PERF_COUNT_HW_INSTRUCTIONS;
    - attr.sample_period = 1;
    - if (pt->synth_opts.callchain)
    - attr.sample_type |= PERF_SAMPLE_CALLCHAIN;
    - if (pt->synth_opts.last_branch)
    - attr.sample_type |= PERF_SAMPLE_BRANCH_STACK;
    err = intel_pt_synth_event(session, "transactions", &attr, id);
    if (err)
    return err;
    @@ -2034,20 +2047,6 @@ static int intel_pt_synth_events(struct intel_pt *pt,
    id += 1;
    }

    - if (pt->synth_opts.branches) {
    - attr.config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS;
    - attr.sample_period = 1;
    - attr.sample_type |= PERF_SAMPLE_ADDR;
    - attr.sample_type &= ~(u64)PERF_SAMPLE_CALLCHAIN;
    - attr.sample_type &= ~(u64)PERF_SAMPLE_BRANCH_STACK;
    - err = intel_pt_synth_event(session, "branches", &attr, id);
    - if (err)
    - return err;
    - pt->sample_branches = true;
    - pt->branches_sample_type = attr.sample_type;
    - pt->branches_id = id;
    - }
    -
    pt->synth_needs_swap = evsel->needs_swap;

    return 0;
    --
    1.9.1
    \
     
     \ /
      Last update: 2017-05-19 11:03    [W:4.082 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site