[PATCH] D19415: [libcxx][rfc] Externalized threading support

Asiri Rathnayake via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 22 08:47:42 PDT 2016


rmaprath created this revision.
rmaprath added reviewers: EricWF, mclow.lists, theraven, jroelofs.
rmaprath added a subscriber: cfe-commits.
Herald added a subscriber: aemerson.

This patch builds on D19412.

The motivation here is to allow toolchain vendors to build a version of `libcxx` with all the underlying os threading mechanics differed to runtime - sacrificing some performance for flexibility.

This API (`_LIBCPP_THREAD_API_EXTERNAL`) currently only works when `libcxx` is build as a static library. This is because the shared library builds pass `-z defs` linker flag, which disallows undefined symbols in the library. I'm not familiar with shared library limitations on specific platforms, but in theory, this could work on shared library builds as well.

Currently there are quite a lot of test failures because the testing infrastructure need to be updated to provide an implementation of this threading API (pthreads will do). Our plan is to hide this whole extension under some cmake variable at some point.

Before putting more effort into this, I thought of checking if the community if open to this kind of an API. Of course, we (ARM) will be committed to maintaining this API in the long run.

http://reviews.llvm.org/D19415

Files:
  include/__mutex_base
  include/__os_support
  include/thread
  src/algorithm.cpp
  src/condition_variable.cpp
  src/memory.cpp
  src/mutex.cpp
  src/thread.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19415.54659.patch
Type: text/x-patch
Size: 10842 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160422/d80c4846/attachment.bin>


More information about the cfe-commits mailing list