perf tools: Add 'G' and 'H' modifiers to event parsing
PATCH v2 1/1 perf tools: Add 'G' and 'H' modifiers to event parsing
They were dropped during conversion of event parser. Add test case to make sure this will not happen again.
Signed-off-by Gleb Natapov <[email protected]>
tools/perf/builtin-test.c +30 -0
@@ -851,6 +851,28 @@ static int test__checkevent_symbolic_name_modifier(struct perf_evlist *evlist)return test__checkevent_symbolic_name (evlist); } +static int test__checkevent_exclude_host_modifier (struct perf_evlist *evlist) +{ +struct perf_evsel *evsel =list_entry (evlist->entries.next, + struct perf_evsel, node); + +TEST_ASSERT_VAL ("wrong exclude guest" , !evsel->attr.exclude_guest); +TEST_ASSERT_VAL ("wrong exclude host" , evsel->attr.exclude_host); + +return test__checkevent_symbolic_name (evlist); +} + +static int test__checkevent_exclude_guest_modifier (struct perf_evlist *evlist) +{ +struct perf_evsel *evsel =list_entry (evlist->entries.next, + struct perf_evsel, node); + +TEST_ASSERT_VAL ("wrong exclude guest" , evsel->attr.exclude_guest); +TEST_ASSERT_VAL ("wrong exclude host" , !evsel->attr.exclude_host); + +return test__checkevent_symbolic_name (evlist); +} +static int test__checkevent_symbolic_alias_modifier (struct perf_evlist *evlist) { struct perf_evsel *evsel = list_entry(evlist->entries.next,
@@ -1091,6 +1113,14 @@ static struct test__event_st { .name = "r1,syscalls:sys_enter_open:k,1:1:hp", .check = test__checkevent_list, }, + { + .name = "instructions:G", + .check = test__checkevent_exclude_host_modifier, + }, + { + .name = "instructions:H", + .check = test__checkevent_exclude_guest_modifier, + }, };#define TEST__EVENTS_CNT (sizeof(test__events) / sizeof(struct test__event_st))
tools/perf/util/parse-events.l +1 -1
@@ -54,7 +54,7 @@ num_dec [0-9]+ num_hex 0x[a-fA-F0-9]+ num_raw_hex [a-fA-F0-9]+ name [a-zA-Z_*?][a-zA-Z0-9_*?]* -modifier_event [ukhp]{1,5} +modifier_event [ukhpGH]{1,8} modifier_bp [rwx] %%
--
Gleb.
Quoted 4 lines · Gleb Natapov
They were dropped during conversion of event parser. Add test case to make sure this will not happen again.
Signed-off-by Gleb Natapov <[email protected]>
Acked-by Jiri Olsa <[email protected]>
thanks,
jirka
Quoted 63 lines
tools/perf/builtin-test.c +30
-0@@ -851,6 +851,28 @@ static int test__checkevent_symbolic_name_modifier(struct perf_evlist *evlist)return test__checkevent_symbolic_name (evlist); } +static int test__checkevent_exclude_host_modifier (struct perf_evlist *evlist) +{ +struct perf_evsel *evsel =list_entry (evlist->entries.next, + struct perf_evsel, node); + +TEST_ASSERT_VAL ("wrong exclude guest" , !evsel->attr.exclude_guest); +TEST_ASSERT_VAL ("wrong exclude host" , evsel->attr.exclude_host); + +return test__checkevent_symbolic_name (evlist); +} + +static int test__checkevent_exclude_guest_modifier (struct perf_evlist *evlist) +{ +struct perf_evsel *evsel =list_entry (evlist->entries.next, + struct perf_evsel, node); + +TEST_ASSERT_VAL ("wrong exclude guest" , evsel->attr.exclude_guest); +TEST_ASSERT_VAL ("wrong exclude host" , !evsel->attr.exclude_host); + +return test__checkevent_symbolic_name (evlist); +} +static int test__checkevent_symbolic_alias_modifier (struct perf_evlist *evlist) { struct perf_evsel *evsel = list_entry(evlist->entries.next,@@ -1091,6 +1113,14 @@ static struct test__event_st { .name = "r1,syscalls:sys_enter_open:k,1:1:hp", .check = test__checkevent_list, }, + { + .name = "instructions:G", + .check = test__checkevent_exclude_host_modifier, + }, + { + .name = "instructions:H", + .check = test__checkevent_exclude_guest_modifier, + }, };#define TEST__EVENTS_CNT (sizeof(test__events) / sizeof(struct test__event_st))tools/perf/util/parse-events.l +1
-2@@ -54,7 +54,7 @@ num_dec [0-9]+ num_hex 0x[a-fA-F0-9]+ num_raw_hex [a-fA-F0-9]+ name [a-zA-Z_*?][a-zA-Z0-9_*?]* -modifier_event [ukhp]{1,5} +modifier_event [ukhpGH]{1,8} modifier_bp [rwx] %% --Gleb.
Em Tue, Apr 17, 2012 at 01:25:00PM +0200, Jiri Olsa escreveu:
Quoted 6 lines · Gleb Natapov
Quoted 4 lines
They were dropped during conversion of event parser. Add test case to make sure this will not happen again.
Signed-off-by Gleb Natapov <[email protected]>Acked-by Jiri Olsa <[email protected]>
Thanks guys, applied and pushed out to perf/urgent.
- Arnaldo
Commit-ID: e7c72d888dac2c81003401d663bd8abd68e7c5cd Gitweb: http://git.kernel.org/tip/e7c72d888dac2c81003401d663bd8abd68e7c5cd Author: Gleb Natapov <[email protected]> AuthorDate: Tue, 17 Apr 2012 14:13:45 +0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 17 Apr 2012 11:20:23 -0300
perf tools: Add 'G' and 'H' modifiers to event parsing
They were dropped during conversion of event parser. Add test case to make sure this will not happen again.
Signed-off-by Gleb Natapov <[email protected]>
Acked-by Jiri Olsa <[email protected]>
Cc Avi Kivity <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Jiri Olsa <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-test.c | 30 ++++++++++++++++++++++++++++++ tools/perf/util/parse-events.l | 2 +- 2 files changed, 31 insertions(+), 1 deletions(-)
tools/perf/builtin-test.c +30 -0
@@ -851,6 +851,28 @@ static int test__checkevent_symbolic_name_modifier(struct perf_evlist *evlist)return test__checkevent_symbolic_name (evlist); } +static int test__checkevent_exclude_host_modifier (struct perf_evlist *evlist) +{ +struct perf_evsel *evsel =list_entry (evlist->entries.next, + struct perf_evsel, node); + +TEST_ASSERT_VAL ("wrong exclude guest" , !evsel->attr.exclude_guest); +TEST_ASSERT_VAL ("wrong exclude host" , evsel->attr.exclude_host); + +return test__checkevent_symbolic_name (evlist); +} + +static int test__checkevent_exclude_guest_modifier (struct perf_evlist *evlist) +{ +struct perf_evsel *evsel =list_entry (evlist->entries.next, + struct perf_evsel, node); + +TEST_ASSERT_VAL ("wrong exclude guest" , evsel->attr.exclude_guest); +TEST_ASSERT_VAL ("wrong exclude host" , !evsel->attr.exclude_host); + +return test__checkevent_symbolic_name (evlist); +} +static int test__checkevent_symbolic_alias_modifier (struct perf_evlist *evlist) { struct perf_evsel *evsel = list_entry(evlist->entries.next,
@@ -1091,6 +1113,14 @@ static struct test__event_st { .name = "r1,syscalls:sys_enter_open:k,1:1:hp", .check = test__checkevent_list, }, + { + .name = "instructions:G", + .check = test__checkevent_exclude_host_modifier, + }, + { + .name = "instructions:H", + .check = test__checkevent_exclude_guest_modifier, + }, };#define TEST__EVENTS_CNT (sizeof(test__events) / sizeof(struct test__event_st))
tools/perf/util/parse-events.l +1 -1
@@ -54,7 +54,7 @@ num_dec [0-9]+ num_hex 0x[a-fA-F0-9]+ num_raw_hex [a-fA-F0-9]+ name [a-zA-Z_*?][a-zA-Z0-9_*?]* -modifier_event [ukhp]{1,5} +modifier_event [ukhpGH]{1,8} modifier_bp [rwx] %%