[PATCH] D11781: Refactored pthread usage in libcxx

Fulvio Esposito via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 10 13:31:14 PDT 2015


espositofulvio added inline comments.

================
Comment at: include/__config:742
@@ +741,3 @@
+#ifndef _LIBCPP_HAS_NO_THREADS
+# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__) || defined(__APPLE__)
+#  define _LIBCPP_THREAD_API _LIBCPP_PTHREAD
----------------
ed wrote:
> espositofulvio wrote:
> > theraven wrote:
> > > #ifdef unix will catch most of these (for some reason, not OS X, even though it's the only one that actually is certified as UNIX...)
> > I didn't know that and I'm not sure I've included all the supported platforms (in include/__config there are definitions for __ sun __ and __ CloudABI __ which I know very little about). Is there somewhere a list of supported platforms?
> CloudABI has pthreads, but it does not have `unix` defined. Both FreeBSD and CloudABI also support C11 `<threads.h>`.
> 
> If you're going to stick to the code you have right now, be sure to add `defined(__CloudABI__)` to that list of operating systems.
> 
> The POSIX way of testing whether pthreads is available is:
> 
>     #include <unistd.h>
>     #if _POSIX_THREADS > 0
>     ...
>     #endif
> 
> See: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html
Unfortunately I think the POSIX way would fail on any system that hasn't unistd.h (Windows), so I think I'll stick with the list and add the missing ones.

================
Comment at: include/__config:742
@@ +741,3 @@
+#ifndef _LIBCPP_HAS_NO_THREADS
+# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__) || defined(__APPLE__)
+#  define _LIBCPP_THREAD_API _LIBCPP_PTHREAD
----------------
espositofulvio wrote:
> ed wrote:
> > espositofulvio wrote:
> > > theraven wrote:
> > > > #ifdef unix will catch most of these (for some reason, not OS X, even though it's the only one that actually is certified as UNIX...)
> > > I didn't know that and I'm not sure I've included all the supported platforms (in include/__config there are definitions for __ sun __ and __ CloudABI __ which I know very little about). Is there somewhere a list of supported platforms?
> > CloudABI has pthreads, but it does not have `unix` defined. Both FreeBSD and CloudABI also support C11 `<threads.h>`.
> > 
> > If you're going to stick to the code you have right now, be sure to add `defined(__CloudABI__)` to that list of operating systems.
> > 
> > The POSIX way of testing whether pthreads is available is:
> > 
> >     #include <unistd.h>
> >     #if _POSIX_THREADS > 0
> >     ...
> >     #endif
> > 
> > See: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html
> Unfortunately I think the POSIX way would fail on any system that hasn't unistd.h (Windows), so I think I'll stick with the list and add the missing ones.
It looks like unix is not defined on Linux, but it has __unix. I think it's safer to stick to the list.


Repository:
  rL LLVM

http://reviews.llvm.org/D11781





More information about the cfe-commits mailing list