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);