Merge "base: make boot_clock work on host linux, hide it on non-linux." am: eaad4e28e8
am: 2eef9831b7
am: 48a7ddba59
am: 36790a0958
Change-Id: I99d6bcb8b206e5dadf542e73f2cda48efdc85245
This commit is contained in:
commit
f8883ff3fb
|
@ -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"],
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
} // namespace android
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue