From 866dc0134a27a14b7d85739c221259a832d313b8 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 8 Dec 2009 18:24:40 +0100 Subject: [PATCH] Check for pthread_condattr_init added to configure script. --- configure.in | 2 ++ src/libstrongswan/threading/mutex.c | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/configure.in b/configure.in index cb3910a64..e02fedbd7 100644 --- a/configure.in +++ b/configure.in @@ -297,6 +297,8 @@ AC_TRY_RUN( [AC_DEFINE([HAVE_CONDATTR_CLOCK_MONOTONIC])] )] ) +dnl check if we actually are able to configure attributes on cond vars +AC_CHECK_FUNCS(pthread_condattr_init) dnl check if native rwlocks are available AC_CHECK_FUNCS(pthread_rwlock_init) LIBS=$saved_LIBS diff --git a/src/libstrongswan/threading/mutex.c b/src/libstrongswan/threading/mutex.c index d05b8674e..0bfe06959 100644 --- a/src/libstrongswan/threading/mutex.c +++ b/src/libstrongswan/threading/mutex.c @@ -341,7 +341,6 @@ condvar_t *condvar_create(condvar_type_t type) case CONDVAR_TYPE_DEFAULT: default: { - pthread_condattr_t condattr; private_condvar_t *this = malloc_thing(private_condvar_t); this->public.wait = (void(*)(condvar_t*, mutex_t *mutex))_wait; @@ -351,12 +350,17 @@ condvar_t *condvar_create(condvar_type_t type) this->public.broadcast = (void(*)(condvar_t*))broadcast; this->public.destroy = (void(*)(condvar_t*))condvar_destroy; - pthread_condattr_init(&condattr); +#ifdef HAVE_PTHREAD_CONDATTR_INIT + { + pthread_condattr_t condattr; + pthread_condattr_init(&condattr); #ifdef HAVE_CONDATTR_CLOCK_MONOTONIC - pthread_condattr_setclock(&condattr, CLOCK_MONOTONIC); + pthread_condattr_setclock(&condattr, CLOCK_MONOTONIC); +#endif + pthread_cond_init(&this->condvar, &condattr); + pthread_condattr_destroy(&condattr); + } #endif - pthread_cond_init(&this->condvar, &condattr); - pthread_condattr_destroy(&condattr); return &this->public; }