| #include "absl/time/clock.h" | |
| #include <sys/time.h> | |
| #include <ctime> | |
| #include <cstdint> | |
| #include "absl/base/internal/raw_logging.h" | |
| namespace absl { | |
| 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 | |
| } // namespace absl |