summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/Android.bp5
-rw-r--r--base/chrono_utils.cpp7
-rw-r--r--base/chrono_utils_test.cpp9
-rw-r--r--base/include/android-base/chrono_utils.h2
4 files changed, 12 insertions, 11 deletions
diff --git a/base/Android.bp b/base/Android.bp
index 81b96db433..14bfe36ee5 100644
--- a/base/Android.bp
+++ b/base/Android.bp
@@ -42,6 +42,7 @@ cc_library {
clang: true,
host_supported: true,
srcs: [
+ "chrono_utils.cpp",
"file.cpp",
"logging.cpp",
"parsenetaddress.cpp",
@@ -64,7 +65,6 @@ cc_library {
srcs: [
"errors_unix.cpp",
"properties.cpp",
- "chrono_utils.cpp",
],
cppflags: ["-Wexit-time-destructors"],
sanitize: {
@@ -74,14 +74,12 @@ cc_library {
},
darwin: {
srcs: [
- "chrono_utils.cpp",
"errors_unix.cpp",
],
cppflags: ["-Wexit-time-destructors"],
},
linux_bionic: {
srcs: [
- "chrono_utils.cpp",
"errors_unix.cpp",
],
cppflags: ["-Wexit-time-destructors"],
@@ -89,7 +87,6 @@ cc_library {
},
linux: {
srcs: [
- "chrono_utils.cpp",
"errors_unix.cpp",
],
cppflags: ["-Wexit-time-destructors"],
diff --git a/base/chrono_utils.cpp b/base/chrono_utils.cpp
index 5eedf3bceb..d73b551b50 100644
--- a/base/chrono_utils.cpp
+++ b/base/chrono_utils.cpp
@@ -21,17 +21,14 @@
namespace android {
namespace base {
+#if defined(__linux__)
boot_clock::time_point boot_clock::now() {
-#ifdef __ANDROID__
timespec ts;
clock_gettime(CLOCK_BOOTTIME, &ts);
return boot_clock::time_point(std::chrono::seconds(ts.tv_sec) +
std::chrono::nanoseconds(ts.tv_nsec));
-#else
- // Darwin does not support clock_gettime.
- return boot_clock::time_point();
-#endif // __ANDROID__
}
+#endif
} // namespace base
} // namespace android
diff --git a/base/chrono_utils_test.cpp b/base/chrono_utils_test.cpp
index 057132d9f9..1f1ce15b16 100644
--- a/base/chrono_utils_test.cpp
+++ b/base/chrono_utils_test.cpp
@@ -16,6 +16,7 @@
#include "android-base/chrono_utils.h"
+#include <err.h>
#include <time.h>
#include <chrono>
@@ -25,9 +26,12 @@
namespace android {
namespace base {
+#if defined(__linux__)
std::chrono::seconds GetBootTimeSeconds() {
struct timespec now;
- clock_gettime(CLOCK_BOOTTIME, &now);
+ if (clock_gettime(CLOCK_BOOTTIME, &now) != 0) {
+ err(1, "clock_gettime failed");
+ }
auto now_tp = boot_clock::time_point(std::chrono::seconds(now.tv_sec) +
std::chrono::nanoseconds(now.tv_nsec));
@@ -41,6 +45,7 @@ TEST(ChronoUtilsTest, BootClockNowSeconds) {
std::chrono::duration_cast<std::chrono::seconds>(boot_clock::now().time_since_epoch());
EXPECT_EQ(now, boot_seconds);
}
+#endif // defined(__linux__)
} // namespace base
-} // namespace android \ No newline at end of file
+} // namespace android
diff --git a/base/include/android-base/chrono_utils.h b/base/include/android-base/chrono_utils.h
index 0086425e5a..795225b9c5 100644
--- a/base/include/android-base/chrono_utils.h
+++ b/base/include/android-base/chrono_utils.h
@@ -22,6 +22,7 @@
namespace android {
namespace base {
+#if defined(__linux__)
// A std::chrono clock based on CLOCK_BOOTTIME.
class boot_clock {
public:
@@ -30,6 +31,7 @@ class boot_clock {
static time_point now();
};
+#endif // defined(__linux__)
} // namespace base
} // namespace android