Switch Checkpoint health sleep time to ms.
This changes the property from microsecond to milliseconds, as we don't
need that sort of precision here. Also switches from using ulseep, which
has been removed from POSIX, to nanosleep.
Test: Builds, Boots, Times
Change-Id: Iefbaf8489ba05d8d688542fd7d4305efb980e701
diff --git a/Checkpoint.cpp b/Checkpoint.cpp
index 3392be5..e060230 100644
--- a/Checkpoint.cpp
+++ b/Checkpoint.cpp
@@ -261,8 +261,9 @@
}
namespace {
-const std::string kSleepTimeProp = "ro.sys.cp_usleeptime";
-const uint32_t usleeptime_default = 1000000; // 1 s
+const std::string kSleepTimeProp = "ro.sys.cp_msleeptime";
+const uint32_t msleeptime_default = 1000; // 1 s
+const uint32_t max_msleeptime = 3600000; // 1 h
const std::string kMinFreeBytesProp = "ro.sys.cp_min_free_bytes";
const uint64_t min_free_bytes_default = 100 * (1 << 20); // 100 MiB
@@ -273,11 +274,15 @@
static void cp_healthDaemon(std::string mnt_pnt, std::string blk_device, bool is_fs_cp) {
struct statvfs data;
uint64_t free_bytes = 0;
- uint32_t usleeptime = GetUintProperty(kSleepTimeProp, usleeptime_default, (uint32_t)-1);
+ uint32_t msleeptime = GetUintProperty(kSleepTimeProp, msleeptime_default, max_msleeptime);
uint64_t min_free_bytes =
GetUintProperty(kMinFreeBytesProp, min_free_bytes_default, (uint64_t)-1);
bool commit_on_full = GetBoolProperty(kCommitOnFullProp, commit_on_full_default);
+ struct timespec req;
+ req.tv_sec = msleeptime / 1000;
+ msleeptime %= 1000;
+ req.tv_nsec = msleeptime * 1000000;
while (isCheckpointing) {
if (is_fs_cp) {
statvfs(mnt_pnt.c_str(), &data);
@@ -302,7 +307,7 @@
break;
}
}
- usleep(usleeptime);
+ nanosleep(&req, NULL);
}
}