summaryrefslogtreecommitdiff
path: root/absl/time/internal/get_current_time_posix.inc
blob: 0ce2a9a941829b650fcbb5dd5bb7e301b5628070 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "absl/time/clock.h"

#include <sys/time.h>
#include <ctime>
#include <cstdint>

#include "absl/base/internal/raw_logging.h"

namespace absl {
inline namespace lts_2019_08_08 {
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
}  // inline namespace lts_2019_08_08
}  // namespace absl