Commit | Line | Data |
---|---|---|
a7346816 JA |
1 | #ifndef FIO_GETTIME_H |
2 | #define FIO_GETTIME_H | |
3 | ||
27325ed5 JA |
4 | #include "arch/arch.h" |
5 | ||
a7346816 JA |
6 | /* |
7 | * Clock sources | |
8 | */ | |
9 | enum fio_cs { | |
10 | CS_GTOD = 1, | |
11 | CS_CGETTIME, | |
12 | CS_CPUCLOCK, | |
01423eae | 13 | CS_INVAL, |
a7346816 JA |
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); | |
aad918e4 | 20 | extern int fio_monotonic_clocktest(int debug); |
5d879392 | 21 | extern void fio_local_clock_init(int); |
a7346816 | 22 | |
39ab7da2 JA |
23 | extern struct timeval *fio_tv; |
24 | ||
27325ed5 JA |
25 | static inline int fio_gettime_offload(struct timeval *tv) |
26 | { | |
76b4a7ef | 27 | time_t last_sec; |
27325ed5 JA |
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 | ||
79c896a1 JA |
41 | extern void fio_gtod_set_cpu(unsigned int cpu); |
42 | ||
a7346816 | 43 | #endif |