From 5351f564918be658b8dd98a373cd91247c1e484b Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 23 Jan 2013 14:02:23 -0700 Subject: [PATCH] OSX: Fixup warnings and clock_gettime() bug Signed-off-by: Jens Axboe --- engines/posixaio.c | 20 +++++++++++++++++--- os/os-mac.h | 11 +++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/engines/posixaio.c b/engines/posixaio.c index 0872f9ae..a943e5bb 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) @@ -91,6 +103,8 @@ static int fio_posixaio_getevents(struct thread_data *td, unsigned int min, if (t && !fill_timespec(&start)) have_timeout = 1; + else + memset(&start, 0, sizeof(start)); r = 0; memset(suspend_list, 0, sizeof(*suspend_list)); diff --git a/os/os-mac.h b/os/os-mac.h index 0f351a78..c8d7dcae 100644 --- a/os/os-mac.h +++ b/os/os-mac.h @@ -16,10 +16,6 @@ #include "../file.h" -#ifndef CLOCK_MONOTONIC -#define CLOCK_MONOTONIC 1 -#endif - #ifndef CLOCK_REALTIME #define CLOCK_REALTIME 1 #endif @@ -177,4 +173,11 @@ static inline int gettid(void) { return mach_thread_self(); } + +/* + * For some reason, there's no header definition for fdatasync(), even + * if it exists. + */ +extern int fdatasync(int fd); + #endif -- 2.25.1