Merge "simpleperf: adjust sample freq instead of checking it."
am: 6dd50e65b7
Change-Id: Id445154d4530b9d4a9c3d237a21e3da6f16612e2
diff --git a/simpleperf/cmd_record.cpp b/simpleperf/cmd_record.cpp
index 390535c..4e7276c 100644
--- a/simpleperf/cmd_record.cpp
+++ b/simpleperf/cmd_record.cpp
@@ -505,9 +505,7 @@
LOG(ERROR) << "Invalid sample frequency: " << args[i];
return false;
}
- if (!CheckSampleFrequency(sample_freq_)) {
- return false;
- }
+ sample_freq_ = AdjustSampleFrequency(sample_freq_);
use_sample_freq_ = true;
} else if (args[i] == "-g") {
fp_callchain_sampling_ = false;
diff --git a/simpleperf/cmd_record_test.cpp b/simpleperf/cmd_record_test.cpp
index d888a58..5f42137 100644
--- a/simpleperf/cmd_record_test.cpp
+++ b/simpleperf/cmd_record_test.cpp
@@ -72,6 +72,7 @@
TEST(record_cmd, freq_option) {
ASSERT_TRUE(RunRecordCmd({"-f", "99"}));
ASSERT_TRUE(RunRecordCmd({"-F", "99"}));
+ ASSERT_TRUE(RunRecordCmd({"-f", std::to_string(UINT_MAX)}));
}
TEST(record_cmd, output_file_option) {
diff --git a/simpleperf/environment.cpp b/simpleperf/environment.cpp
index bf5e663..604798a 100644
--- a/simpleperf/environment.cpp
+++ b/simpleperf/environment.cpp
@@ -432,22 +432,22 @@
return true;
}
-bool CheckSampleFrequency(uint64_t sample_freq) {
+uint64_t AdjustSampleFrequency(uint64_t sample_freq) {
if (sample_freq == 0) {
- LOG(ERROR) << "Sample frequency can't be zero.";
- return false;
+ LOG(WARNING) << "Sample frequency can't be zero, adjust it to 1";
+ return 1u;
}
uint64_t max_sample_freq;
if (!GetMaxSampleFrequency(&max_sample_freq)) {
// Omit the check if can't read perf_event_max_sample_rate.
- return true;
+ return sample_freq;
}
if (sample_freq > max_sample_freq) {
- LOG(ERROR) << "Sample frequency " << sample_freq << " is out of range [1, "
- << max_sample_freq << "]";
- return false;
+ LOG(WARNING) << "Sample frequency " << sample_freq << " is out of range [1, "
+ << max_sample_freq << "], adjust it to " << max_sample_freq;
+ return max_sample_freq;
}
- return true;
+ return sample_freq;
}
bool CheckKernelSymbolAddresses() {
diff --git a/simpleperf/environment.h b/simpleperf/environment.h
index b1c52ea..52d0a7c 100644
--- a/simpleperf/environment.h
+++ b/simpleperf/environment.h
@@ -70,7 +70,7 @@
bool CheckPerfEventLimit();
bool GetMaxSampleFrequency(uint64_t* max_sample_freq);
-bool CheckSampleFrequency(uint64_t sample_freq);
+uint64_t AdjustSampleFrequency(uint64_t sample_freq);
bool CheckKernelSymbolAddresses();
bool CanRecordRawData();