1 // SPDX-License-Identifier: GPL-2.0
2 #include <linux/compiler.h>
9 static int process_event_unit(struct perf_tool
*tool __maybe_unused
,
10 union perf_event
*event
,
11 struct perf_sample
*sample __maybe_unused
,
12 struct machine
*machine __maybe_unused
)
14 struct event_update_event
*ev
= (struct event_update_event
*) event
;
16 TEST_ASSERT_VAL("wrong id", ev
->id
== 123);
17 TEST_ASSERT_VAL("wrong id", ev
->type
== PERF_EVENT_UPDATE__UNIT
);
18 TEST_ASSERT_VAL("wrong unit", !strcmp(ev
->data
, "KRAVA"));
22 static int process_event_scale(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 event_update_event
*ev
= (struct event_update_event
*) event
;
28 struct event_update_event_scale
*ev_data
;
30 ev_data
= (struct event_update_event_scale
*) ev
->data
;
32 TEST_ASSERT_VAL("wrong id", ev
->id
== 123);
33 TEST_ASSERT_VAL("wrong id", ev
->type
== PERF_EVENT_UPDATE__SCALE
);
34 TEST_ASSERT_VAL("wrong scale", ev_data
->scale
== 0.123);
39 struct perf_tool tool
;
43 static int process_event_name(struct perf_tool
*tool
,
44 union perf_event
*event
,
45 struct perf_sample
*sample __maybe_unused
,
46 struct machine
*machine __maybe_unused
)
48 struct event_name
*tmp
= container_of(tool
, struct event_name
, tool
);
49 struct event_update_event
*ev
= (struct event_update_event
*) event
;
51 TEST_ASSERT_VAL("wrong id", ev
->id
== 123);
52 TEST_ASSERT_VAL("wrong id", ev
->type
== PERF_EVENT_UPDATE__NAME
);
53 TEST_ASSERT_VAL("wrong name", !strcmp(ev
->data
, tmp
->name
));
57 static int process_event_cpus(struct perf_tool
*tool __maybe_unused
,
58 union perf_event
*event
,
59 struct perf_sample
*sample __maybe_unused
,
60 struct machine
*machine __maybe_unused
)
62 struct event_update_event
*ev
= (struct event_update_event
*) event
;
63 struct event_update_event_cpus
*ev_data
;
66 ev_data
= (struct event_update_event_cpus
*) ev
->data
;
68 map
= cpu_map__new_data(&ev_data
->cpus
);
70 TEST_ASSERT_VAL("wrong id", ev
->id
== 123);
71 TEST_ASSERT_VAL("wrong type", ev
->type
== PERF_EVENT_UPDATE__CPUS
);
72 TEST_ASSERT_VAL("wrong cpus", map
->nr
== 3);
73 TEST_ASSERT_VAL("wrong cpus", map
->map
[0] == 1);
74 TEST_ASSERT_VAL("wrong cpus", map
->map
[1] == 2);
75 TEST_ASSERT_VAL("wrong cpus", map
->map
[2] == 3);
80 int test__event_update(struct test
*test __maybe_unused
, int subtest __maybe_unused
)
82 struct perf_evlist
*evlist
;
83 struct perf_evsel
*evsel
;
84 struct event_name tmp
;
86 evlist
= perf_evlist__new_default();
87 TEST_ASSERT_VAL("failed to get evlist", evlist
);
89 evsel
= perf_evlist__first(evlist
);
91 TEST_ASSERT_VAL("failed to allos ids",
92 !perf_evsel__alloc_id(evsel
, 1, 1));
94 perf_evlist__id_add(evlist
, evsel
, 0, 0, 123);
96 evsel
->unit
= strdup("KRAVA");
98 TEST_ASSERT_VAL("failed to synthesize attr update unit",
99 !perf_event__synthesize_event_update_unit(NULL
, evsel
, process_event_unit
));
101 evsel
->scale
= 0.123;
103 TEST_ASSERT_VAL("failed to synthesize attr update scale",
104 !perf_event__synthesize_event_update_scale(NULL
, evsel
, process_event_scale
));
106 tmp
.name
= perf_evsel__name(evsel
);
108 TEST_ASSERT_VAL("failed to synthesize attr update name",
109 !perf_event__synthesize_event_update_name(&tmp
.tool
, evsel
, process_event_name
));
111 evsel
->own_cpus
= cpu_map__new("1,2,3");
113 TEST_ASSERT_VAL("failed to synthesize attr update cpus",
114 !perf_event__synthesize_event_update_cpus(&tmp
.tool
, evsel
, process_event_cpus
));
116 cpu_map__put(evsel
->own_cpus
);