[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: IBM z/OS compatibility issues - pthread
From: |
Bruno Haible |
Subject: |
Re: IBM z/OS compatibility issues - pthread |
Date: |
Mon, 18 Nov 2019 04:18:02 +0100 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-166-generic; KDE/5.18.0; x86_64; ; ) |
Hello Daniel,
> PTHREAD ENVIRONMENT
>
> z/OS has effectively two major pthread interfaces: _OPEN_THREADS, and
> _UNIX95_THREADS. The latter is the one you want to use, because its API
> is compatible with other systems. (_OPEN_THREADS uses e.g. a different
> signature for pthread_getspecific() that comes from a draft POSIX
> specification; refer to
>
>
> https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.4.0/com.ibm.zos.v2r4.bpxbd00/ptgetsp.htm
>
> for the gory details. pthread_detach() is different, too, and
> pthread_cond_timedwait() can return EAGAIN.)
>
> Additional information on z/OS feature test macros, if desired:
>
>
> https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.4.0/com.ibm.zos.v2r4.bpxbd00/ftms.htm
>
> More specifically, to get a suitable pthreads interface, you need to
> #define _UNIX95_THREADS and _XOPEN_SOURCE=600.
I'd suggest to add this to the recommended values of CC and CXX in
https://gitlab.com/ghwiki/gnow-how/wikis/Platforms/Configuration
> (This could perhaps be
> added to AC_USE_SYSTEM_EXTENSIONS for this system.)
I'm not sure adding these flags in AC_USE_SYSTEM_EXTENSIONS or
gl_USE_SYSTEM_EXTENSIONS would work for all packages. For the majority,
probably yes, but for all of them? Not sure.
> However, one annoyance of _UNIX95_THREADS is that it does not define
> PTHREAD_RWLOCK_INITIALIZER, supposedly because the SUSv3 standard (which
> is what that feature test macro requests) does not specify it. However,
> IBM does provide the "implementation-defined"
> PTHREAD_RWLOCK_INITIALIZER_NP, which can be used in its place. See the
> note here:
>
>
> https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.4.0/com.ibm.zos.v2r4.bpxbd00/rp0r0i.htm
>
> I would thus suggest adding something like the following to
> lib/pthread.in.h:
>
> #if defined(__MVS__) && !defined(PTHREAD_RWLOCK_INITIALIZER)
> # define PTHREAD_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER_NP
> #endif
Tell the package maintainers to import the gnulib module 'pthread-rwlock'.
It will deal with the missing PTHREAD_RWLOCK_INITIALIZER; this issue occurs
also on some older Solaris versions.
Bruno
- Re: IBM z/OS compatibility issues, (continued)
Re: IBM z/OS compatibility issues - per-thread locale functions, Bruno Haible, 2019/11/17
Re: IBM z/OS compatibility issues - pthread,
Bruno Haible <=
Re: IBM z/OS compatibility issues - shell environment, Bruno Haible, 2019/11/17
Re: IBM z/OS compatibility issues - environment variables, Bruno Haible, 2019/11/17
Re: IBM z/OS compatibility issues - miscellaneous bugs, Bruno Haible, 2019/11/17