X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=gettime.c;h=72fda3f8597e335be2fc4677a208f02db9fa62b7;hb=8c9ca2e6fe5a400fcba3a7dd45a33effea8298e0;hp=08d2d2b3b1205a56543ec6aef00e52b37711d622;hpb=4780fa263c038646ab803b63f23f486b2b7b1140;p=fio.git diff --git a/gettime.c b/gettime.c index 08d2d2b3..72fda3f8 100644 --- a/gettime.c +++ b/gettime.c @@ -5,15 +5,18 @@ #include #include #include +#include #include "fio.h" #include "smalloc.h" #include "hash.h" +#ifdef ARCH_HAVE_CPU_CLOCK static unsigned long cycles_per_usec; -static struct timeval last_tv; static unsigned long last_cycles; +#endif +static struct timeval last_tv; static int last_tv_valid; static struct timeval *fio_tv; @@ -183,6 +186,7 @@ void fio_gettime(struct timeval *tp, void fio_unused *caller) memcpy(&last_tv, tp, sizeof(*tp)); } +#ifdef ARCH_HAVE_CPU_CLOCK static unsigned long get_cycles_per_usec(void) { struct timeval s, e; @@ -204,14 +208,12 @@ static unsigned long get_cycles_per_usec(void) return c_e - c_s; } -void fio_clock_init(void) +static void calibrate_cpu_clock(void) { double delta, mean, S; unsigned long avg, cycles[10]; int i, samples; - last_tv_valid = 0; - cycles[0] = get_cycles_per_usec(); S = delta = mean = 0.0; for (i = 0; i < 10; i++) { @@ -229,7 +231,7 @@ void fio_clock_init(void) for (i = 0; i < 10; i++) { double this = cycles[i]; - if ((max(this, mean) - min(this, mean)) > S) + if ((fmax(this, mean) - fmin(this, mean)) > S) continue; samples++; avg += this; @@ -246,6 +248,18 @@ void fio_clock_init(void) dprint(FD_TIME, "mean=%f, S=%f\n", mean, S); cycles_per_usec = avg; + +} +#else +static void calibrate_cpu_clock(void) +{ +} +#endif + +void fio_clock_init(void) +{ + last_tv_valid = 0; + calibrate_cpu_clock(); } void fio_gtod_init(void)