Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752516AbdFON5A (ORCPT ); Thu, 15 Jun 2017 09:57:00 -0400 Received: from mail-wm0-f50.google.com ([74.125.82.50]:37891 "EHLO mail-wm0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752387AbdFON45 (ORCPT ); Thu, 15 Jun 2017 09:56:57 -0400 From: Stephane Eranian To: linux-kernel@vger.kernel.org Cc: acme@redhat.com, peterz@infradead.org, mingo@elte.hu, ak@linux.intel.com, kan.liang@intel.com, jolsa@redhat.com Subject: [PATCH 5/5] perf/script: add support for skid ip Date: Thu, 15 Jun 2017 06:56:29 -0700 Message-Id: <1497534989-29231-6-git-send-email-eranian@google.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1497534989-29231-1-git-send-email-eranian@google.com> References: <1497534989-29231-1-git-send-email-eranian@google.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2360 Lines: 71 This patch adds a skid_ip field to perf script to dump the raw value of the PERF_SAMPLE_SKID_IP field in each sample. $ perf script -F ip,skid_ip ...... Signed-off-by: Stephane Eranian --- tools/perf/builtin-script.c | 12 +++++++++++- tools/perf/util/session.c | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 4761b0d7fcb5..ba6720cf70ce 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -85,6 +85,7 @@ enum perf_output_field { PERF_OUTPUT_INSN = 1U << 21, PERF_OUTPUT_INSNLEN = 1U << 22, PERF_OUTPUT_BRSTACKINSN = 1U << 23, + PERF_OUTPUT_SKID_IP = 1U << 24, }; struct output_option { @@ -115,6 +116,7 @@ struct output_option { {.str = "insn", .field = PERF_OUTPUT_INSN}, {.str = "insnlen", .field = PERF_OUTPUT_INSNLEN}, {.str = "brstackinsn", .field = PERF_OUTPUT_BRSTACKINSN}, + {.str = "skid_ip", .field = PERF_OUTPUT_SKID_IP}, }; /* default set to maintain compatibility with current format */ @@ -1125,6 +1127,11 @@ static size_t data_src__printf(u64 data_src) return printf("%-*s", maxlen, out); } +static void print_sample_skid_ip(struct perf_sample *sample) +{ + printf(" %"PRIx64" ", sample->skid_ip); +} + static void process_event(struct perf_script *script, struct perf_sample *sample, struct perf_evsel *evsel, struct addr_location *al, @@ -1193,7 +1200,10 @@ static void process_event(struct perf_script *script, if (perf_evsel__is_bpf_output(evsel) && PRINT_FIELD(BPF_OUTPUT)) print_sample_bpf_output(sample); - print_insn(sample, attr, thread, machine); + + if (PRINT_FIELD(SKID_IP)) + print_sample_skid_ip(sample); + printf("\n"); } diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 0bfc1051c708..51b90630cb32 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -1125,7 +1125,7 @@ static void dump_sample(struct perf_evsel *evsel, union perf_event *event, sample_read__printf(sample, evsel->attr.read_format); if (sample_type & PERF_SAMPLE_SKID_IP) - printf("... skid_ip: %" PRIu64 "\n", sample->skid_ip); + printf("... skid_ip: 0x%" PRIx64 "\n", sample->skid_ip); } static struct machine *machines__find_for_cpumode(struct machines *machines, -- 2.13.1.518.g3df882009-goog