From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757403Ab3IAKhj (ORCPT ); Sun, 1 Sep 2013 06:37:39 -0400 Received: from mx1.redhat.com ([209.132.183.28]:14106 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754691Ab3IAKhf (ORCPT ); Sun, 1 Sep 2013 06:37:35 -0400 From: Jiri Olsa To: linux-kernel@vger.kernel.org Cc: Jiri Olsa , Corey Ashford , Frederic Weisbecker , Ingo Molnar , Namhyung Kim , Paul Mackerras , Peter Zijlstra , Arnaldo Carvalho de Melo , Andi Kleen , David Ahern Subject: [PATCH 15/25] perf tools: Add perf data version 3 header swap Date: Sun, 1 Sep 2013 12:36:26 +0200 Message-Id: <1378031796-17892-16-git-send-email-jolsa@redhat.com> In-Reply-To: <1378031796-17892-1-git-send-email-jolsa@redhat.com> References: <1378031796-17892-1-git-send-email-jolsa@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Adding perf data version 3 header swap same way as it's done for v2. Signed-off-by: Jiri Olsa Cc: Corey Ashford Cc: Frederic Weisbecker Cc: Ingo Molnar Cc: Namhyung Kim Cc: Paul Mackerras Cc: Peter Zijlstra Cc: Arnaldo Carvalho de Melo Cc: Andi Kleen Cc: David Ahern --- tools/perf/util/header.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index db6b131..77d588f 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -2568,13 +2568,28 @@ static int swap_header_v2(struct perf_file_header *header) return 0; } -static int swap_header(struct perf_file_header *header) +static int swap_header_v3(struct perf_file_header *header) +{ + struct perf_file_header_v3 *v3 = &header->v3; + + mem_bswap_64(v3, offsetof(struct perf_file_header_v3, + adds_features)); + + swap_features(v3->adds_features); + return 0; +} + +static int swap_header(struct perf_header *ph, + struct perf_file_header *header) { /* swap the generic part */ mem_bswap_64(header, offsetof(struct perf_file_header, v2)); /* version specific swap */ - return swap_header_v2(header); + if (ph->version <= PERF_HEADER_VERSION_2) + return swap_header_v2(header); + + return swap_header_v3(header); } int perf_file_header__read(struct perf_file_header *header, @@ -2594,7 +2609,7 @@ int perf_file_header__read(struct perf_file_header *header, return -1; } - return ph->needs_swap ? swap_header(header) : 0; + return ph->needs_swap ? swap_header(ph, header) : 0; } static int perf_file_section__process(struct perf_file_section *section, -- 1.7.11.7