diff options
author | Zheng Yan <zheng.z.yan@intel.com> | 2012-06-15 14:31:41 +0800 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-06-18 12:13:26 +0200 |
commit | a6146d5040cce560f700221158d77dd335eed332 (patch) | |
tree | a5361219b1f8ae962ea54b997f4a83eb9cf15e7a /tools/perf/util/parse-events.c | |
parent | 90e2b22dee908c13df256140a0d6527e3e8ea3f4 (diff) |
perf/tool: Add PMU event alias support
Add support to specify alias term within the event description.
The definition of pmu event alias is located at:
${sysfs_mount}/bus/event_source/devices/${pmu}/events/
Each file in the 'events' directory defines a event alias. Its contents
are like:
config=1,config1=2
Using pmu event alias, an event can be now specified like:
uncore/CLOCKTICKS/ or uncore/event=CLOCKTICKS/
Signed-off-by: Zheng Yan <zheng.z.yan@intel.com>
[ Cleaned it up. ]
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1339741902-8449-13-git-send-email-zheng.z.yan@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/util/parse-events.c')
-rw-r--r-- | tools/perf/util/parse-events.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index d002170adb3..3339424cc42 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -701,6 +701,9 @@ int parse_events_add_pmu(struct list_head **list, int *idx, memset(&attr, 0, sizeof(attr)); + if (perf_pmu__check_alias(pmu, head_config)) + return -EINVAL; + /* * Configure hardcoded terms first, no need to check * return value when called with fail == 0 ;) @@ -1143,6 +1146,13 @@ int parse_events__term_str(struct parse_events__term **term, config, str, 0); } +int parse_events__term_clone(struct parse_events__term **new, + struct parse_events__term *term) +{ + return new_term(new, term->type_val, term->type_term, term->config, + term->val.str, term->val.num); +} + void parse_events__free_terms(struct list_head *terms) { struct parse_events__term *term, *h; |