init: Use android::base::boot_clock instead of /proc/uptime
/proc/uptime internally uses whatever would be returned by clock_gettime(CLOCK_BOOTTIME), so use android::base::boot_clock instead which avoids parsing strings and rounding errors. Bug: 77273909 Test: CtsBootStatsTestCases Change-Id: Ic162eefcf226073949a18cca55db3c2324b98749
This commit is contained in:
parent
af15fbf9aa
commit
2980f57f2c
1 changed files with 5 additions and 3 deletions
|
@ -32,12 +32,14 @@
|
|||
#include <mutex>
|
||||
#include <thread>
|
||||
|
||||
#include <android-base/chrono_utils.h>
|
||||
#include <android-base/file.h>
|
||||
#include <android-base/logging.h>
|
||||
#include <android-base/properties.h>
|
||||
#include <android-base/stringprintf.h>
|
||||
|
||||
using android::base::StringPrintf;
|
||||
using android::base::boot_clock;
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
namespace android {
|
||||
|
@ -50,9 +52,9 @@ static std::condition_variable g_bootcharting_finished_cv;
|
|||
static bool g_bootcharting_finished;
|
||||
|
||||
static long long get_uptime_jiffies() {
|
||||
std::string uptime;
|
||||
if (!android::base::ReadFileToString("/proc/uptime", &uptime)) return 0;
|
||||
return 100LL * strtod(uptime.c_str(), NULL);
|
||||
constexpr int64_t kNanosecondsPerJiffy = 10000000;
|
||||
boot_clock::time_point uptime = boot_clock::now();
|
||||
return uptime.time_since_epoch().count() / kNanosecondsPerJiffy;
|
||||
}
|
||||
|
||||
static std::unique_ptr<FILE, decltype(&fclose)> fopen_unique(const char* filename,
|
||||
|
|
Loading…
Reference in a new issue