gettime: improve gettimeofday() offload support
[fio.git] / gettime-thread.c
index c1b4b0967c28f354b8a3e6c9ad82fc2845c41e56..72cc4d8a472783f7e73d7d40f8a8da9f56759a2a 100644 (file)
@@ -6,7 +6,7 @@
 #include "fio.h"
 #include "smalloc.h"
 
 #include "fio.h"
 #include "smalloc.h"
 
-struct timeval *fio_tv;
+struct timeval *fio_tv = NULL;
 int fio_gtod_offload = 0;
 int fio_gtod_cpu = -1;
 static pthread_t gtod_thread;
 int fio_gtod_offload = 0;
 int fio_gtod_cpu = -1;
 static pthread_t gtod_thread;
@@ -20,8 +20,15 @@ void fio_gtod_init(void)
 
 static void fio_gtod_update(void)
 {
 
 static void fio_gtod_update(void)
 {
-       if (fio_tv)
-               gettimeofday(fio_tv, NULL);
+       if (fio_tv) {
+               struct timeval __tv;
+
+               gettimeofday(&__tv, NULL);
+               fio_tv->tv_sec = __tv.tv_sec;
+               write_barrier();
+               fio_tv->tv_usec = __tv.tv_usec;
+               write_barrier();
+       }
 }
 
 static void *gtod_thread_main(void *data)
 }
 
 static void *gtod_thread_main(void *data)