]> git.sur5r.net Git - openldap/commitdiff
Fix pthread_create test for AIX. AIX deviates from POSIX in that threads
authorHoward Chu <hyc@openldap.org>
Wed, 10 May 2000 16:09:26 +0000 (16:09 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 10 May 2000 16:09:26 +0000 (16:09 +0000)
are created detached by default. We need to set the thread attributes in
advance, otherwise pthread_detach will fail.

build/openldap.m4

index 7de0ec9d34cfd8f2505bf45c5b0fcd995b326b45..167552295467ebd8b6a281f03a484de57b4cab5e 100644 (file)
@@ -616,14 +616,26 @@ AC_DEFUN([OL_PTHREAD_TEST_FUNCTION],[
        /* pthread test function */
        pthread_t t;
        int status;
+#if HAVE_PTHREADS_FINAL && defined(PTHREAD_CREATE_UNDETACHED)
+       /* This system (e.g. AIX) defaults detached; must override */
+       pthread_attr_t attr;
 
-       /* make sure pthread_create() isn't just a stub */
+       status = pthread_attr_init(&attr);
+       if( status ) exit( status );
+
+       status = pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_UNDETACHED);
+       if( status ) exit( status );
+
+#define        ATTR    &attr
+#else
 #if HAVE_PTHREADS_D4
-       status = pthread_create(&t, pthread_attr_default, task, NULL);
+#define        ATTR    pthread_attr_default
 #else
-       status = pthread_create(&t, NULL, task, NULL);
+#define        ATTR    NULL
 #endif
-
+#endif
+       /* make sure pthread_create() isn't just a stub */
+       status = pthread_create(&t, ATTR, task, NULL);
        if( status ) exit( status );
 
        /* make sure pthread_detach() isn't just a stub */