int last_tv_valid;
int warned;
};
+#ifdef ARCH_HAVE_CPU_CLOCK
#ifdef CONFIG_TLS_THREAD
static __thread struct tv_valid static_tv_valid;
#else
static pthread_key_t tv_tls_key;
#endif
+#endif
enum fio_cs fio_clock_source = FIO_PREFERRED_CLOCK_SOURCE;
int fio_clock_source_set = 0;
static void __fio_gettime(struct timeval *tp)
{
- struct tv_valid *tv;
-
-#ifdef CONFIG_TLS_THREAD
- tv = &static_tv_valid;
-#else
- tv = pthread_getspecific(tv_tls_key);
-#endif
-
switch (fio_clock_source) {
#ifdef CONFIG_GETTIMEOFDAY
case CS_GTOD:
#ifdef ARCH_HAVE_CPU_CLOCK
case CS_CPUCLOCK: {
uint64_t usecs, t;
+ struct tv_valid *tv;
+
+#ifdef CONFIG_TLS_THREAD
+ tv = &static_tv_valid;
+#else
+ tv = pthread_getspecific(tv_tls_key);
+#endif
t = get_cpu_clock();
if (t < cycles_start && !cycles_wrap)
cycles_wrap = 1;
- else if (cycles_wrap && t >= cycles_start) {
- if (!tv->warned) {
- log_err("fio: double CPU clock wrap\n");
- tv->warned = 1;
- }
+ else if (cycles_wrap && t >= cycles_start && !tv->warned) {
+ log_err("fio: double CPU clock wrap\n");
+ tv->warned = 1;
}
t -= cycles_start;