diff options
author | Jiri Olsa <jolsa@redhat.com> | 2012-03-15 15:09:18 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-03-16 13:30:13 -0400 |
commit | 5f537a26590e696466aae7f41e6b77e92c8486d1 (patch) | |
tree | 6946ba5b2a4cc1133ab11d8a81c37465f794e655 /tools/perf/builtin-test.c | |
parent | cd82a32e9924d3a82bd27f830755d23e4ded25bc (diff) |
perf tools: Add support to specify pmu style event
Added new event rule to the event definition grammar:
event_def: event_pmu |
...
event_pmu: PE_NAME '/' event_config '/'
Using this rule, event could be now specified like:
cpu/config=1,config1=2,config2=3/u
where pmu name 'cpu' is looked up via following path:
${sysfs_mount}/bus/event_source/devices/${pmu}
and config options are bound to the pmu's format definiton:
${sysfs_mount}/bus/event_source/devices/${pmu}/format
The hardcoded config options still stays and have precedence
over any format field defined with same name.
Acked-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/n/tip-50d8nr94f8k4wkezutrxvthe@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-test.c')
-rw-r--r-- | tools/perf/builtin-test.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tools/perf/builtin-test.c b/tools/perf/builtin-test.c index 58bfe8bde5ee..86874238a350 100644 --- a/tools/perf/builtin-test.c +++ b/tools/perf/builtin-test.c | |||
@@ -877,6 +877,22 @@ static int test__checkevent_genhw_modifier(struct perf_evlist *evlist) | |||
877 | return test__checkevent_genhw(evlist); | 877 | return test__checkevent_genhw(evlist); |
878 | } | 878 | } |
879 | 879 | ||
880 | static int test__checkevent_pmu(struct perf_evlist *evlist) | ||
881 | { | ||
882 | |||
883 | struct perf_evsel *evsel = list_entry(evlist->entries.next, | ||
884 | struct perf_evsel, node); | ||
885 | |||
886 | TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->nr_entries); | ||
887 | TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->attr.type); | ||
888 | TEST_ASSERT_VAL("wrong config", 10 == evsel->attr.config); | ||
889 | TEST_ASSERT_VAL("wrong config1", 1 == evsel->attr.config1); | ||
890 | TEST_ASSERT_VAL("wrong config2", 3 == evsel->attr.config2); | ||
891 | TEST_ASSERT_VAL("wrong period", 1000 == evsel->attr.sample_period); | ||
892 | |||
893 | return 0; | ||
894 | } | ||
895 | |||
880 | static struct test__event_st { | 896 | static struct test__event_st { |
881 | const char *name; | 897 | const char *name; |
882 | __u32 type; | 898 | __u32 type; |
@@ -958,6 +974,10 @@ static struct test__event_st { | |||
958 | .name = "L1-dcache-load-miss:kp", | 974 | .name = "L1-dcache-load-miss:kp", |
959 | .check = test__checkevent_genhw_modifier, | 975 | .check = test__checkevent_genhw_modifier, |
960 | }, | 976 | }, |
977 | { | ||
978 | .name = "cpu/config=10,config1,config2=3,period=1000/u", | ||
979 | .check = test__checkevent_pmu, | ||
980 | }, | ||
961 | }; | 981 | }; |
962 | 982 | ||
963 | #define TEST__EVENTS_CNT (sizeof(test__events) / sizeof(struct test__event_st)) | 983 | #define TEST__EVENTS_CNT (sizeof(test__events) / sizeof(struct test__event_st)) |