From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755785AbbHGHXc (ORCPT ); Fri, 7 Aug 2015 03:23:32 -0400 Received: from terminus.zytor.com ([198.137.202.10]:39729 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752585AbbHGHX2 (ORCPT ); Fri, 7 Aug 2015 03:23:28 -0400 Date: Fri, 7 Aug 2015 00:23:17 -0700 From: tip-bot for Adrian Hunter Message-ID: Cc: hpa@zytor.com, tglx@linutronix.de, mingo@kernel.org, adrian.hunter@intel.com, jolsa@redhat.com, acme@redhat.com, linux-kernel@vger.kernel.org Reply-To: jolsa@redhat.com, adrian.hunter@intel.com, acme@redhat.com, linux-kernel@vger.kernel.org, hpa@zytor.com, tglx@linutronix.de, mingo@kernel.org In-Reply-To: <1437150840-31811-15-git-send-email-adrian.hunter@intel.com> References: <1437150840-31811-15-git-send-email-adrian.hunter@intel.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf tools: Add perf_pmu__format_bits() Git-Commit-ID: 09ff607176ab2bf7e038150100fdf9290a6fbe47 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 09ff607176ab2bf7e038150100fdf9290a6fbe47 Gitweb: http://git.kernel.org/tip/09ff607176ab2bf7e038150100fdf9290a6fbe47 Author: Adrian Hunter AuthorDate: Fri, 17 Jul 2015 19:33:49 +0300 Committer: Arnaldo Carvalho de Melo CommitDate: Thu, 6 Aug 2015 16:49:01 -0300 perf tools: Add perf_pmu__format_bits() Add perf_pmu__format_bits() to get the format bits for a PMU config term. Intel PT will use this to validate terms and to record format bits to enable later interpreting the config from the attribute stored in the perf.data file. Signed-off-by: Adrian Hunter Cc: Jiri Olsa Link: http://lkml.kernel.org/r/1437150840-31811-15-git-send-email-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/pmu.c | 17 ++++++++++++++++- tools/perf/util/pmu.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index b615cdf..c548ec8 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -542,7 +542,7 @@ struct perf_pmu *perf_pmu__find(const char *name) } static struct perf_pmu_format * -pmu_find_format(struct list_head *formats, char *name) +pmu_find_format(struct list_head *formats, const char *name) { struct perf_pmu_format *format; @@ -553,6 +553,21 @@ pmu_find_format(struct list_head *formats, char *name) return NULL; } +__u64 perf_pmu__format_bits(struct list_head *formats, const char *name) +{ + struct perf_pmu_format *format = pmu_find_format(formats, name); + __u64 bits = 0; + int fbit; + + if (!format) + return 0; + + for_each_set_bit(fbit, format->bits, PERF_PMU_FORMAT_BITS) + bits |= 1ULL << fbit; + + return bits; +} + /* * Sets value based on the format definition (format parameter) * and unformated value (value parameter). diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index 7b9c8cf..5d7e844 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -54,6 +54,7 @@ int perf_pmu__config_terms(struct list_head *formats, struct perf_event_attr *attr, struct list_head *head_terms, bool zero, struct parse_events_error *error); +__u64 perf_pmu__format_bits(struct list_head *formats, const char *name); int perf_pmu__check_alias(struct perf_pmu *pmu, struct list_head *head_terms, struct perf_pmu_info *info); struct list_head *perf_pmu__alias(struct perf_pmu *pmu,