| #include "absl/time/clock.h" |
| |
| #include <sys/time.h> |
| #include <ctime> |
| #include <cstdint> |
| |
| #include "absl/base/internal/raw_logging.h" |
| |
| namespace absl { |
| ABSL_NAMESPACE_BEGIN |
| namespace time_internal { |
| |
| static int64_t GetCurrentTimeNanosFromSystem() { |
| const int64_t kNanosPerSecond = 1000 * 1000 * 1000; |
| struct timespec ts; |
| ABSL_RAW_CHECK(clock_gettime(CLOCK_REALTIME, &ts) == 0, |
| "Failed to read real-time clock."); |
| return (int64_t{ts.tv_sec} * kNanosPerSecond + |
| int64_t{ts.tv_nsec}); |
| } |
| |
| } // namespace time_internal |
| ABSL_NAMESPACE_END |
| } // namespace absl |