Home | History | Annotate | Download | only in fio
      1 #ifndef FIO_GETTIME_H
      2 #define FIO_GETTIME_H
      3 
      4 #include "arch/arch.h"
      5 
      6 /*
      7  * Clock sources
      8  */
      9 enum fio_cs {
     10 	CS_GTOD		= 1,
     11 	CS_CGETTIME,
     12 	CS_CPUCLOCK,
     13 	CS_INVAL,
     14 };
     15 
     16 extern void fio_gettime(struct timeval *, void *);
     17 extern void fio_gtod_init(void);
     18 extern void fio_clock_init(void);
     19 extern int fio_start_gtod_thread(void);
     20 extern int fio_monotonic_clocktest(int debug);
     21 extern void fio_local_clock_init(int);
     22 
     23 extern struct timeval *fio_tv;
     24 
     25 static inline int fio_gettime_offload(struct timeval *tv)
     26 {
     27 	time_t last_sec;
     28 
     29 	if (!fio_tv)
     30 		return 0;
     31 
     32 	do {
     33 		read_barrier();
     34 		last_sec = tv->tv_sec = fio_tv->tv_sec;
     35 		tv->tv_usec = fio_tv->tv_usec;
     36 	} while (fio_tv->tv_sec != last_sec);
     37 
     38 	return 1;
     39 }
     40 
     41 extern void fio_gtod_set_cpu(unsigned int cpu);
     42 
     43 #endif
     44