]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
VG_(read_millisecond_timer)() is now monotonic, even if set_timeofday() is called...
authorBart Van Assche <bvanassche@acm.org>
Wed, 14 May 2008 09:50:08 +0000 (09:50 +0000)
committerBart Van Assche <bvanassche@acm.org>
Wed, 14 May 2008 09:50:08 +0000 (09:50 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8072

coregrind/m_libcproc.c

index 3117f96a797de2a8decfcbf4c121c96d31c2c372..cd3d771214b08c696906754929470a16b42ed48d 100644 (file)
@@ -541,10 +541,21 @@ UInt VG_(read_millisecond_timer) ( void )
    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)