1 #include <linux/compiler.h>
8 static bool has_term(struct stat_config_event
*config
,
13 for (i
= 0; i
< config
->nr
; i
++) {
14 if ((config
->data
[i
].tag
== tag
) &&
15 (config
->data
[i
].val
== val
))
22 static int process_stat_config_event(struct perf_tool
*tool __maybe_unused
,
23 union perf_event
*event
,
24 struct perf_sample
*sample __maybe_unused
,
25 struct machine
*machine __maybe_unused
)
27 struct stat_config_event
*config
= &event
->stat_config
;
28 struct perf_stat_config stat_config
;
30 #define HAS(term, val) \
31 has_term(config, PERF_STAT_CONFIG_TERM__##term, val)
33 TEST_ASSERT_VAL("wrong nr", config
->nr
== PERF_STAT_CONFIG_TERM__MAX
);
34 TEST_ASSERT_VAL("wrong aggr_mode", HAS(AGGR_MODE
, AGGR_CORE
));
35 TEST_ASSERT_VAL("wrong scale", HAS(SCALE
, 1));
36 TEST_ASSERT_VAL("wrong interval", HAS(INTERVAL
, 1));
40 perf_event__read_stat_config(&stat_config
, config
);
42 TEST_ASSERT_VAL("wrong aggr_mode", stat_config
.aggr_mode
== AGGR_CORE
);
43 TEST_ASSERT_VAL("wrong scale", stat_config
.scale
== 1);
44 TEST_ASSERT_VAL("wrong interval", stat_config
.interval
== 1);
48 int test__synthesize_stat_config(int subtest __maybe_unused
)
50 struct perf_stat_config stat_config
= {
51 .aggr_mode
= AGGR_CORE
,
56 TEST_ASSERT_VAL("failed to synthesize stat_config",
57 !perf_event__synthesize_stat_config(NULL
, &stat_config
, process_stat_config_event
, NULL
));
62 static int process_stat_event(struct perf_tool
*tool __maybe_unused
,
63 union perf_event
*event
,
64 struct perf_sample
*sample __maybe_unused
,
65 struct machine
*machine __maybe_unused
)
67 struct stat_event
*st
= &event
->stat
;
69 TEST_ASSERT_VAL("wrong cpu", st
->cpu
== 1);
70 TEST_ASSERT_VAL("wrong thread", st
->thread
== 2);
71 TEST_ASSERT_VAL("wrong id", st
->id
== 3);
72 TEST_ASSERT_VAL("wrong val", st
->val
== 100);
73 TEST_ASSERT_VAL("wrong run", st
->ena
== 200);
74 TEST_ASSERT_VAL("wrong ena", st
->run
== 300);
78 int test__synthesize_stat(int subtest __maybe_unused
)
80 struct perf_counts_values count
;
86 TEST_ASSERT_VAL("failed to synthesize stat_config",
87 !perf_event__synthesize_stat(NULL
, 1, 2, 3, &count
, process_stat_event
, NULL
));
92 static int process_stat_round_event(struct perf_tool
*tool __maybe_unused
,
93 union perf_event
*event
,
94 struct perf_sample
*sample __maybe_unused
,
95 struct machine
*machine __maybe_unused
)
97 struct stat_round_event
*stat_round
= &event
->stat_round
;
99 TEST_ASSERT_VAL("wrong time", stat_round
->time
== 0xdeadbeef);
100 TEST_ASSERT_VAL("wrong type", stat_round
->type
== PERF_STAT_ROUND_TYPE__INTERVAL
);
104 int test__synthesize_stat_round(int subtest __maybe_unused
)
106 TEST_ASSERT_VAL("failed to synthesize stat_config",
107 !perf_event__synthesize_stat_round(NULL
, 0xdeadbeef, PERF_STAT_ROUND_TYPE__INTERVAL
,
108 process_stat_round_event
, NULL
));