Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753974AbbHRQoV (ORCPT ); Tue, 18 Aug 2015 12:44:21 -0400 Received: from mga11.intel.com ([192.55.52.93]:1540 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753708AbbHRQlX (ORCPT ); Tue, 18 Aug 2015 12:41:23 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,702,1432623600"; d="scan'208";a="786447409" From: kan.liang@intel.com To: acme@kernel.org Cc: a.p.zijlstra@chello.nl, mingo@redhat.com, jolsa@kernel.org, namhyung@kernel.org, ak@linux.intel.com, eranian@google.com, linux-kernel@vger.kernel.org, Kan Liang Subject: [PATCH RFC 04/10] perf,tools: Add 'N' event/group modifier Date: Tue, 18 Aug 2015 05:25:40 -0400 Message-Id: <1439889946-28986-5-git-send-email-kan.liang@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1439889946-28986-1-git-send-email-kan.liang@intel.com> References: <1439889946-28986-1-git-send-email-kan.liang@intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3188 Lines: 99 From: Kan Liang Add a new event/group modifier 'N' to mark the event which will be read counter statistics during sampling. Signed-off-by: Kan Liang --- tools/perf/util/evsel.h | 1 + tools/perf/util/parse-events.c | 8 +++++++- tools/perf/util/parse-events.l | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index 93ac6b1..e5ced73 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -110,6 +110,7 @@ struct perf_evsel { int exclude_GH; int nr_members; int sample_read; + int stat_read; unsigned long *per_pkg_mask; struct perf_evsel *leader; char *group_name; diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index d826e6f..a322b60 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -821,6 +821,7 @@ struct event_modifier { int precise; int exclude_GH; int sample_read; + int stat_read; int pinned; }; @@ -835,6 +836,7 @@ static int get_event_modifier(struct event_modifier *mod, char *str, int eI = evsel ? evsel->attr.exclude_idle : 0; int precise = evsel ? evsel->attr.precise_ip : 0; int sample_read = 0; + int stat_read = 0; int pinned = evsel ? evsel->attr.pinned : 0; int exclude = eu | ek | eh; @@ -872,6 +874,8 @@ static int get_event_modifier(struct event_modifier *mod, char *str, eG = 1; } else if (*str == 'S') { sample_read = 1; + } else if (*str == 'N') { + stat_read = 1; } else if (*str == 'D') { pinned = 1; } else @@ -902,6 +906,7 @@ static int get_event_modifier(struct event_modifier *mod, char *str, mod->precise = precise; mod->exclude_GH = exclude_GH; mod->sample_read = sample_read; + mod->stat_read = stat_read; mod->pinned = pinned; return 0; @@ -916,7 +921,7 @@ static int check_modifier(char *str) char *p = str; /* The sizeof includes 0 byte as well. */ - if (strlen(str) > (sizeof("ukhGHpppSDI") - 1)) + if (strlen(str) > (sizeof("ukhGHpppSNDI") - 1)) return -1; while (*p) { @@ -955,6 +960,7 @@ int parse_events__modifier_event(struct list_head *list, char *str, bool add) evsel->attr.exclude_idle = mod.eI; evsel->exclude_GH = mod.exclude_GH; evsel->sample_read = mod.sample_read; + evsel->stat_read = mod.stat_read; if (perf_evsel__is_group_leader(evsel)) evsel->attr.pinned = mod.pinned; diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 936d566..de2dd4b 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -122,7 +122,7 @@ num_raw_hex [a-fA-F0-9]+ name [a-zA-Z_*?][a-zA-Z0-9_*?.]* name_minus [a-zA-Z_*?][a-zA-Z0-9\-_*?.]* /* If you add a modifier you need to update check_modifier() */ -modifier_event [ukhpGHSDI]+ +modifier_event [ukhpGHSNDI]+ modifier_bp [rwx]{1,3} %% -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/