Hello,
While investigating a build failure of the "gamin" package in Buildroot
on the Microblaze architecture
(
http://autobuild.buildroot.net/results/887/887df97196d7777efbf18a7bee91aa45…)
regarding PTHREAD_MUTEX_RECURSIVE being undefined, I noticed a
discrepancy between the definition of PTHREAD_MUTEX_RECURSIVE in the
linuxthreads variant of pthread.h and the NPTL variant of pthread.h.
Indeed, libpthread/nptl/sysdeps/pthread/pthread.h contains:
#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
,
PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
#endif
while the corresponding linuxthreads version, in
libpthread/linuxthreads/sysdeps/pthread/pthread.h contains:
#ifdef __USE_UNIX98
,
PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_ADAPTIVE_NP,
PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
#endif
Notice how the NPTL code defines all the non-NP variants if
__USE_XOPEN2K8 is defined, but not the linuxthreads version?
Maybe this difference is normal, I am not familiar enough with all the
standards and conformance issues, but I thought it would be good to
point it out.
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com