dnl should be tested separately.
dnl
dnl tests:
-dnl pthread_yield() was renamed to sched_yield() in Draft 10, so
-dnl only a Draft 10 library will define this
-dnl PTHREAD_INTR_ENABLE was introduced in Draft 6, and renamed to
-dnl PTHREAD_CANCEL_ENABLE in Draft 7. Draft 7-10 has _CANCEL_,
-dnl only Draft 6 has _INTR_
+dnl pthread_yield() was dropped in Draft 9, so
+dnl only a Draft <= 8 library will define this
+dnl pthread_detach() was dropped in Draft 8, it is present
+dnl in every other version
+dnl PTHREAD_CREATE_UNDETACHED is only in Draft 7, it was called
+dnl PTHREAD_CREATE_JOINABLE after that
+dnl pthread_attr_default was dropped in Draft 6, only 4 and 5 have it
dnl PTHREAD_MUTEX_INITIALIZER was introduced in Draft 5. It's not
dnl interesting to us because we don't try to statically
dnl initialize mutexes. 5-10 has it.
dnl pthread_attr_create was renamed to pthread_attr_init after Draft 4.
dnl Draft 6-10 has _init, Draft 4 has _create. (dunno about 5)
dnl
-dnl Besides the use of sched_yield vs pthread_yield, differences from
-dnl Draft 7 thru Draft 10 don't appear significant for our purposes.
+dnl Draft 9 and 10 are equivalent for our purposes.
dnl
AC_DEFUN([OL_POSIX_THREAD_VERSION],
[AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[
- AC_EGREP_HEADER(sched_yield,pthread.h,
- ol_cv_pthread_version=10, [
-
+ AC_EGREP_HEADER(pthread_yield,pthread.h,[
+ AC_EGREP_HEADER(pthread_detach,pthread.h,[
AC_EGREP_CPP(draft7,[
# include <pthread.h>
-# ifdef PTHREAD_CANCEL_ENABLE
+# ifdef PTHREAD_CREATE_JOINABLE
draft7
# endif
], ol_cv_pthread_version=7, [
-
- AC_EGREP_CPP(draft6,[
-# include <pthread.h>
-#ifdef PTHREAD_INTR_ENABLE
- draft6
-#endif
- ], ol_cv_pthread_version=6, [
-
+ AC_EGREP_HEADER(pthread_attr_default,pthread.h,[
AC_EGREP_CPP(draft5,[
# include <pthread.h>
#ifdef PTHREAD_MUTEX_INITIALIZER
draft5
#endif
], ol_cv_pthread_version=5, [
-
AC_EGREP_HEADER(pthread_attr_create,pthread.h,
- ol_cv_pthread_version=4, ol_cv_pthread_version=0) ]) ]) ]) ])
+ ol_cv_pthread_version=4, ol_cv_pthread_version=0) ]) ],
+ ol_cv_pthread_version=6) ]) ],
+ ol_cv_pthread_version=8) ],
+ ol_cv_pthread_version=10)
])
])dnl
dnl