From: Howard Chu Date: Wed, 10 May 2000 16:09:26 +0000 (+0000) Subject: Fix pthread_create test for AIX. AIX deviates from POSIX in that threads X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~3040 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9ce83ce54f7b22eb60bf89d51a22963baeea1e6a;p=openldap Fix pthread_create test for AIX. AIX deviates from POSIX in that threads are created detached by default. We need to set the thread attributes in advance, otherwise pthread_detach will fail. --- diff --git a/build/openldap.m4 b/build/openldap.m4 index 7de0ec9d34..1675522954 100644 --- a/build/openldap.m4 +++ b/build/openldap.m4 @@ -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 */