Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2980f57f authored by Luis Hector Chavez's avatar Luis Hector Chavez
Browse files

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
parent af15fbf9
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -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,