From 88a5abf5e202b4aedae85a7891b759fe15b6198a Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 20 Aug 2012 17:58:58 +0200 Subject: [PATCH] Don't use POSIX semaphores if a MONOTONIC clock is available POSIX semaphores use CLOCK_REALTIME, but our semaphore_t abstraction expects CLOCK_MONOTONIC based times. Use the mutex/condvar based fallback if time_monotonic() actuall returns monotonic times. --- src/libstrongswan/threading/semaphore.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libstrongswan/threading/semaphore.c b/src/libstrongswan/threading/semaphore.c index c35cf1ea5..b785ff944 100644 --- a/src/libstrongswan/threading/semaphore.c +++ b/src/libstrongswan/threading/semaphore.c @@ -15,6 +15,14 @@ #include +#if defined(HAVE_CLOCK_GETTIME) && \ + (defined(HAVE_CONDATTR_CLOCK_MONOTONIC) || \ + defined(HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC)) +/* if we use MONOTONIC times, we can't use POSIX_SEMAPHORES since they use + * times based on CLOCK_REALTIME */ +#undef HAVE_SEM_TIMEDWAIT +#endif /* HAVE_CLOCK_GETTIME && ... */ + #ifdef HAVE_SEM_TIMEDWAIT #include #else /* !HAVE_SEM_TIMEDWAIT */