lkml.org 
[lkml]   [2015]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V4 03/24] perf tools: Hit all build ids when AUX area tracing
    Date
    We need to include all buildids when a perf.data
    file contains AUX area tracing data because we
    do not decode the trace for that purpose because
    it would take too long.

    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    ---
    tools/perf/builtin-buildid-list.c | 9 +++++++++
    tools/perf/builtin-inject.c | 8 +++++++-
    tools/perf/builtin-record.c | 10 +++++++++-
    3 files changed, 25 insertions(+), 2 deletions(-)

    diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c
    index feb420f..9fe93c8 100644
    --- a/tools/perf/builtin-buildid-list.c
    +++ b/tools/perf/builtin-buildid-list.c
    @@ -69,6 +69,15 @@ static int perf_session__list_build_ids(bool force, bool with_hits)
    session = perf_session__new(&file, false, &build_id__mark_dso_hit_ops);
    if (session == NULL)
    return -1;
    +
    + /*
    + * We take all buildids when the file contains AUX area tracing data
    + * because we do not decode the trace because it would take too long.
    + */
    + if (!perf_data_file__is_pipe(&file) &&
    + perf_header__has_feat(&session->header, HEADER_AUXTRACE))
    + with_hits = false;
    +
    /*
    * in pipe-mode, the only way to get the buildids is to parse
    * the record stream. Buildids are stored as RECORD_HEADER_BUILD_ID
    diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
    index 6d4bbde..cc905f1 100644
    --- a/tools/perf/builtin-inject.c
    +++ b/tools/perf/builtin-inject.c
    @@ -27,6 +27,7 @@ struct perf_inject {
    struct perf_session *session;
    bool build_ids;
    bool sched_stat;
    + bool have_auxtrace;
    const char *input_name;
    struct perf_data_file output;
    u64 bytes_written;
    @@ -122,6 +123,8 @@ static s64 perf_event__repipe_auxtrace(struct perf_tool *tool,
    tool);
    int ret;

    + inject->have_auxtrace = true;
    +
    if (!inject->output.is_pipe) {
    off_t offset;

    @@ -508,9 +511,12 @@ static int __cmd_inject(struct perf_inject *inject)
    ret = perf_session__process_events(session);

    if (!file_out->is_pipe) {
    - if (inject->build_ids)
    + if (inject->build_ids) {
    perf_header__set_feat(&session->header,
    HEADER_BUILD_ID);
    + if (inject->have_auxtrace)
    + dsos__hit_all(session);
    + }
    /*
    * The AUX areas have been removed and replaced with
    * synthesized hardware events, so clear the feature flag.
    diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
    index c8c784c..4d0ebbb 100644
    --- a/tools/perf/builtin-record.c
    +++ b/tools/perf/builtin-record.c
    @@ -620,8 +620,16 @@ out_child:
    if (!err && !file->is_pipe) {
    rec->session->header.data_size += rec->bytes_written;

    - if (!rec->no_buildid)
    + if (!rec->no_buildid) {
    process_buildids(rec);
    + /*
    + * We take all buildids when the file contains
    + * AUX area tracing data because we do not decode the
    + * trace because it would take too long.
    + */
    + if (rec->opts.full_auxtrace)
    + dsos__hit_all(rec->session);
    + }
    perf_session__write_header(rec->session, rec->evlist, fd, true);
    }

    --
    1.9.1


    \
     
     \ /
      Last update: 2015-04-30 17:21    [W:4.254 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site