now += (ULong)(nsec / 1000);
# else
- struct vki_timeval tv_now;
+ struct vki_timespec ts_now;
SysRes res;
- res = VG_(do_syscall2)(__NR_gettimeofday, (UWord)&tv_now, (UWord)NULL);
- now = tv_now.tv_sec * 1000000ULL + tv_now.tv_usec;
+ res = VG_(do_syscall2)(__NR_clock_gettime, VKI_CLOCK_MONOTONIC,
+ (UWord)&ts_now);
+ if (res.isError == 0)
+ {
+ now = ts_now.tv_sec * 1000000ULL + ts_now.tv_nsec / 1000;
+ }
+ else
+ {
+ struct vki_timeval tv_now;
+ res = VG_(do_syscall2)(__NR_gettimeofday, (UWord)&tv_now, (UWord)NULL);
+ vg_assert(! res.isError);
+ now = tv_now.tv_sec * 1000000ULL + tv_now.tv_usec;
+ }
# endif
if (base == 0)