Revert "bootstat: Remove custom uptime parser in favor of elapsedRealtime."

This reverts commit 26f40c04c3ad80e2bc449990010d39d1c1b9a5f0.

This change broke the Darwin SDK target.

Test: none
Change-Id: Ia54fe2c31da8d8fa2825e023b035fb8321dcd457
diff --git a/init/util.h b/init/util.h
index 4444427..5c38dc3 100644
--- a/init/util.h
+++ b/init/util.h
@@ -25,8 +25,6 @@
 #include <ostream>
 #include <string>
 
-#include <android-base/chrono_utils.h>
-
 #define COLDBOOT_DONE "/dev/.coldboot_done"
 
 using namespace std::chrono_literals;
@@ -37,16 +35,32 @@
 bool read_file(const char* path, std::string* content);
 bool write_file(const char* path, const char* content);
 
+// A std::chrono clock based on CLOCK_BOOTTIME.
+class boot_clock {
+ public:
+  typedef std::chrono::nanoseconds duration;
+  typedef std::chrono::time_point<boot_clock, duration> time_point;
+  static constexpr bool is_steady = true;
+
+  static time_point now();
+};
+
 class Timer {
  public:
-  Timer();
+  Timer() : start_(boot_clock::now()) {
+  }
 
-  double duration_s() const;
+  double duration_s() const {
+    typedef std::chrono::duration<double> double_duration;
+    return std::chrono::duration_cast<double_duration>(boot_clock::now() - start_).count();
+  }
 
-  int64_t duration_ms() const;
+  int64_t duration_ms() const {
+    return std::chrono::duration_cast<std::chrono::milliseconds>(boot_clock::now() - start_).count();
+  }
 
  private:
-  android::base::boot_clock::time_point start_;
+  boot_clock::time_point start_;
 };
 
 std::ostream& operator<<(std::ostream& os, const Timer& t);