diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libstrongswan/threading/mutex.c | 5 | ||||
-rw-r--r-- | src/libstrongswan/utils.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/libstrongswan/threading/mutex.c b/src/libstrongswan/threading/mutex.c index 9c05ff044..a35695624 100644 --- a/src/libstrongswan/threading/mutex.c +++ b/src/libstrongswan/threading/mutex.c @@ -253,6 +253,11 @@ static void _wait(private_condvar_t *this, private_mutex_t *mutex) } } +/* use the monotonic clock based version of this function if available */ +#ifdef HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC +#define pthread_cond_timedwait pthread_cond_timedwait_monotonic +#endif + /** * Implementation of condvar_t.timed_wait_abs. */ diff --git a/src/libstrongswan/utils.c b/src/libstrongswan/utils.c index a3cb87056..e331ac0d0 100644 --- a/src/libstrongswan/utils.c +++ b/src/libstrongswan/utils.c @@ -167,7 +167,9 @@ bool mkdir_p(const char *path, mode_t mode) */ time_t time_monotonic(timeval_t *tv) { -#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CONDATTR_CLOCK_MONOTONIC) +#if defined(HAVE_CLOCK_GETTIME) && \ + (defined(HAVE_CONDATTR_CLOCK_MONOTONIC) || \ + defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)) /* as we use time_monotonic() for condvar operations, we use the * monotonic time source only if it is also supported by pthread. */ timespec_t ts; @@ -181,7 +183,7 @@ time_t time_monotonic(timeval_t *tv) } return ts.tv_sec; } -#endif /* HAVE_CLOCK_MONOTONIC && HAVE_CONDATTR_CLOCK_MONOTONIC */ +#endif /* HAVE_CLOCK_GETTIME && (...) */ /* Fallback to non-monotonic timestamps: * On MAC OS X, creating monotonic timestamps is rather difficult. We * could use mach_absolute_time() and catch sleep/wakeup notifications. |