X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=engines%2Fposixaio.c;h=1858e5202457eecd4c707cff7fd78f35bf1dfc34;hb=ad705bcb7e79a7cdb9891db17b4c40b13b6c30c3;hp=0872f9aebbe9ab59bd9d0e21b0ac089b0b1da8e4;hpb=67bf982340d95ca98098ea050b54b4c7adb116c0;p=fio.git diff --git a/engines/posixaio.c b/engines/posixaio.c index 0872f9ae..1858e520 100644 --- a/engines/posixaio.c +++ b/engines/posixaio.c @@ -19,13 +19,25 @@ struct posixaio_data { static int fill_timespec(struct timespec *ts) { -#ifdef _POSIX_TIMERS - if (!clock_gettime(CLOCK_MONOTONIC, ts)) +#ifdef CONFIG_CLOCK_GETTIME +#ifdef CONFIG_CLOCK_MONOTONIC + clockid_t clk = CLOCK_MONOTONIC; +#else + clockid_t clk = CLOCK_REALTIME; +#endif + if (!clock_gettime(clk, ts)) return 0; perror("clock_gettime"); -#endif return 1; +#else + struct timeval tv; + + gettimeofday(&tv, NULL); + ts->tv_sec = tv.tv_sec; + ts->tv_nsec = tv.tv_usec * 1000; + return 0; +#endif } static unsigned long long ts_utime_since_now(struct timespec *t) @@ -86,15 +98,18 @@ static int fio_posixaio_getevents(struct thread_data *td, unsigned int min, struct flist_head *entry; struct timespec start; int have_timeout = 0; - int suspend_entries = 0; + int suspend_entries; unsigned int r; if (t && !fill_timespec(&start)) have_timeout = 1; + else + memset(&start, 0, sizeof(start)); r = 0; - memset(suspend_list, 0, sizeof(*suspend_list)); restart: + memset(suspend_list, 0, sizeof(*suspend_list)); + suspend_entries = 0; flist_for_each(entry, &td->io_u_busylist) { struct io_u *io_u = flist_entry(entry, struct io_u, list); int err;