ASSERT_TRUE(RunRecordCmd({"-e", "cs-etm"}, tmpfile.path));
std::unique_ptr<RecordFileReader> reader = RecordFileReader::CreateInstance(tmpfile.path);
ASSERT_TRUE(reader);
+
+ // cs-etm uses sample period instead of sample freq.
+ ASSERT_EQ(reader->AttrSection().size(), 1u);
+ const perf_event_attr* attr = reader->AttrSection()[0].attr;
+ ASSERT_EQ(attr->freq, 0);
+ ASSERT_EQ(attr->sample_period, 1);
+
bool has_auxtrace_info = false;
bool has_auxtrace = false;
bool has_aux = false;
if (event_type->event_type.type == PERF_TYPE_TRACEPOINT) {
selection->event_attr.freq = 0;
selection->event_attr.sample_period = DEFAULT_SAMPLE_PERIOD_FOR_TRACEPOINT_EVENT;
+ } else if (IsEtmEventType(event_type->event_type.type)) {
+ // ETM recording has no sample frequency to adjust. Using sample frequency only wastes time
+ // enabling/disabling etm devices. So don't adjust frequency by default.
+ selection->event_attr.freq = 0;
+ selection->event_attr.sample_period = 1;
} else {
selection->event_attr.freq = 1;
// Set default sample freq here may print msg "Adjust sample freq to max allowed sample