storaged: allow dump window to be less than an hour
This is useful for CTS where we just need dump from last few minutes.
Bug: 34198239
Bug: 34845096
Change-Id: Ic543e7184606f419f8989bf0cb992cd46e48845c
diff --git a/storaged/include/storaged.h b/storaged/include/storaged.h
index 0bdff74..591719e 100644
--- a/storaged/include/storaged.h
+++ b/storaged/include/storaged.h
@@ -302,7 +302,7 @@
return mUidm.get_uid_io_stats();
}
std::map<uint64_t, std::vector<struct uid_record>> get_uid_records(
- int hours, uint64_t threshold, bool force_report) {
+ double hours, uint64_t threshold, bool force_report) {
return mUidm.dump(hours, threshold, force_report);
}
void update_uid_io_interval(int interval) {
diff --git a/storaged/include/storaged_uid_monitor.h b/storaged/include/storaged_uid_monitor.h
index f6250ae..031b7c4 100644
--- a/storaged/include/storaged_uid_monitor.h
+++ b/storaged/include/storaged_uid_monitor.h
@@ -92,7 +92,7 @@
std::unordered_map<uint32_t, struct uid_info> get_uid_io_stats();
// called by dumpsys
std::map<uint64_t, std::vector<struct uid_record>> dump(
- int hours, uint64_t threshold, bool force_report);
+ double hours, uint64_t threshold, bool force_report);
// called by battery properties listener
void set_charger_state(charger_stat_t stat);
// called by storaged periodic_chore or dump with force_report
diff --git a/storaged/storaged_service.cpp b/storaged/storaged_service.cpp
index 8624b3b..9c8cbf0 100644
--- a/storaged/storaged_service.cpp
+++ b/storaged/storaged_service.cpp
@@ -88,7 +88,7 @@
return PERMISSION_DENIED;
}
- int hours = 0;
+ double hours = 0;
int time_window = 0;
uint64_t threshold = 0;
bool force_report = false;
@@ -97,7 +97,7 @@
if (arg == String16("--hours")) {
if (++i >= args.size())
break;
- hours = stoi(String16::std_string(args[i]));
+ hours = stod(String16::std_string(args[i]));
continue;
}
if (arg == String16("--time_window")) {
diff --git a/storaged/storaged_uid_monitor.cpp b/storaged/storaged_uid_monitor.cpp
index 2c20dba..3b893b5 100644
--- a/storaged/storaged_uid_monitor.cpp
+++ b/storaged/storaged_uid_monitor.cpp
@@ -150,7 +150,7 @@
}
std::map<uint64_t, std::vector<struct uid_record>> uid_monitor::dump(
- int hours, uint64_t threshold, bool force_report)
+ double hours, uint64_t threshold, bool force_report)
{
if (force_report) {
report();
@@ -162,7 +162,7 @@
uint64_t first_ts = 0;
if (hours != 0) {
- first_ts = time(NULL) - (uint64_t)hours * HOUR_TO_SEC;
+ first_ts = time(NULL) - hours * HOUR_TO_SEC;
}
for (auto it = records.lower_bound(first_ts); it != records.end(); ++it) {