3 #include "parse-events.h"
7 #include <linux/kernel.h>
9 static int perf_evsel__roundtrip_cache_name_test(void)
12 int type
, op
, err
= 0, ret
= 0, i
, idx
;
13 struct perf_evsel
*evsel
;
14 struct perf_evlist
*evlist
= perf_evlist__new();
19 for (type
= 0; type
< PERF_COUNT_HW_CACHE_MAX
; type
++) {
20 for (op
= 0; op
< PERF_COUNT_HW_CACHE_OP_MAX
; op
++) {
21 /* skip invalid cache type */
22 if (!perf_evsel__is_cache_op_valid(type
, op
))
25 for (i
= 0; i
< PERF_COUNT_HW_CACHE_RESULT_MAX
; i
++) {
26 __perf_evsel__hw_cache_type_op_res_name(type
, op
, i
,
28 err
= parse_events(evlist
, name
, NULL
);
36 evsel
= perf_evlist__first(evlist
);
38 for (type
= 0; type
< PERF_COUNT_HW_CACHE_MAX
; type
++) {
39 for (op
= 0; op
< PERF_COUNT_HW_CACHE_OP_MAX
; op
++) {
40 /* skip invalid cache type */
41 if (!perf_evsel__is_cache_op_valid(type
, op
))
44 for (i
= 0; i
< PERF_COUNT_HW_CACHE_RESULT_MAX
; i
++) {
45 __perf_evsel__hw_cache_type_op_res_name(type
, op
, i
,
47 if (evsel
->idx
!= idx
)
52 if (strcmp(perf_evsel__name(evsel
), name
)) {
53 pr_debug("%s != %s\n", perf_evsel__name(evsel
), name
);
57 evsel
= perf_evsel__next(evsel
);
62 perf_evlist__delete(evlist
);
66 static int __perf_evsel__name_array_test(const char *names
[], int nr_names
)
69 struct perf_evsel
*evsel
;
70 struct perf_evlist
*evlist
= perf_evlist__new();
75 for (i
= 0; i
< nr_names
; ++i
) {
76 err
= parse_events(evlist
, names
[i
], NULL
);
78 pr_debug("failed to parse event '%s', err %d\n",
80 goto out_delete_evlist
;
85 evlist__for_each_entry(evlist
, evsel
) {
86 if (strcmp(perf_evsel__name(evsel
), names
[evsel
->idx
])) {
88 pr_debug("%s != %s\n", perf_evsel__name(evsel
), names
[evsel
->idx
]);
93 perf_evlist__delete(evlist
);
97 #define perf_evsel__name_array_test(names) \
98 __perf_evsel__name_array_test(names, ARRAY_SIZE(names))
100 int test__perf_evsel__roundtrip_name_test(int subtest __maybe_unused
)
102 int err
= 0, ret
= 0;
104 err
= perf_evsel__name_array_test(perf_evsel__hw_names
);
108 err
= __perf_evsel__name_array_test(perf_evsel__sw_names
,
109 PERF_COUNT_SW_DUMMY
+ 1);
113 err
= perf_evsel__roundtrip_cache_name_test();