X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=gettime.c;h=df329f66d3d5735b3225411315303f87b039c796;hb=15cf40b2844caad4cf8da0cdaeddd132cd6adefc;hp=035d275df60e2fc325be540818a130fc7835aba3;hpb=9ff1c070210a697c599abd1019737d79cd3351e6;p=fio.git diff --git a/gettime.c b/gettime.c index 035d275d..df329f66 100644 --- a/gettime.c +++ b/gettime.c @@ -15,6 +15,7 @@ #ifdef ARCH_HAVE_CPU_CLOCK static unsigned long cycles_per_usec; +static unsigned long inv_cycles_per_usec; int tsc_reliable = 0; #endif @@ -177,7 +178,7 @@ void fio_gettime(struct timeval *tp, void fio_unused *caller) } else if (tv) tv->last_cycles = t; - usecs = t / cycles_per_usec; + usecs = (t * inv_cycles_per_usec) / 16777216UL; tp->tv_sec = usecs / 1000000; tp->tv_usec = usecs % 1000000; break; @@ -277,6 +278,8 @@ static void calibrate_cpu_clock(void) dprint(FD_TIME, "mean=%f, S=%f\n", mean, S); cycles_per_usec = avg; + inv_cycles_per_usec = 16777216UL / cycles_per_usec; + dprint(FD_TIME, "inv_cycles_per_usec=%lu\n", inv_cycles_per_usec); } #else static void calibrate_cpu_clock(void)