]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Check for pthread_condattr_init added to configure script.
authorTobias Brunner <tobias@strongswan.org>
Tue, 8 Dec 2009 17:24:40 +0000 (18:24 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 23 Dec 2009 16:02:25 +0000 (17:02 +0100)
configure.in
src/libstrongswan/threading/mutex.c

index cb3910a64ff18bb984f39165b09f87198f4518d4..e02fedbd7467931dc4ee34653b54591003ec6e8b 100644 (file)
@@ -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
index d05b8674ec6634eac740ccc5c4f3c600dd9023e1..0bfe06959ed719153a8789ee26174f696a599299 100644 (file)
@@ -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;
                }