diff --git a/lib/replace/system/time.h b/lib/replace/system/time.h index b6d26092890..00f0d7f99e6 100644 --- a/lib/replace/system/time.h +++ b/lib/replace/system/time.h @@ -79,13 +79,21 @@ int rep_utimes(const char *filename, const struct timeval tv[2]); typedef int clockid_t; int rep_clock_gettime(clockid_t clk_id, struct timespec *tp); #endif -/* make sure we have a best effort CUSTOM_CLOCK_MONOTONIC we can rely on */ +/* make sure we have a best effort CUSTOM_CLOCK_MONOTONIC we can rely on. + * + * on AIX the values of CLOCK_* are cast expressions, not integer constants, + * this prevents them from being compared against in a preprocessor directive. + * The following ...IS_* macros can be used to check which clock is in use. + */ #if defined(CLOCK_MONOTONIC) #define CUSTOM_CLOCK_MONOTONIC CLOCK_MONOTONIC +#define CUSTOM_CLOCK_MONOTONIC_IS_MONOTONIC #elif defined(CLOCK_HIGHRES) #define CUSTOM_CLOCK_MONOTONIC CLOCK_HIGHRES +#define CUSTOM_CLOCK_MONOTONIC_IS_HIGHRES #else #define CUSTOM_CLOCK_MONOTONIC CLOCK_REALTIME +#define CUSTOM_CLOCK_MONOTONIC_IS_REALTIME #endif #endif diff --git a/lib/util/time.c b/lib/util/time.c index 8c01627e2a1..8a4d93d4ac1 100644 --- a/lib/util/time.c +++ b/lib/util/time.c @@ -60,7 +60,7 @@ _PUBLIC_ void clock_gettime_mono(struct timespec *tp) } #endif /* then try the monotonic clock: */ -#if CUSTOM_CLOCK_MONOTONIC != CLOCK_REALTIME +#ifndef CUSTOM_CLOCK_MONOTONIC_IS_REALTIME if (clock_gettime(CUSTOM_CLOCK_MONOTONIC,tp) == 0) { return; }