| From 117456752cf9ac1f24d3cfd917ad34f670c244b8 Mon Sep 17 00:00:00 2001 |
| From: Emil Velikov <emil.l.velikov@gmail.com> |
| Date: Thu, 19 Mar 2015 22:26:11 +0000 |
| Subject: [PATCH] third_party/threads: Use PTHREAD_MUTEX_RECURSIVE by default |
| |
| PTHREAD_MUTEX_RECURSIVE_NP was used for compatibility with old glibc. |
| Although due to the_GNU_SOURCES define the portable, |
| PTHREAD_MUTEX_RECURSIVE will be available for Linuxes since at least |
| 1998. Simplify things giving us compatibility with musl which |
| apparently does not provide the non-portable define. |
| |
| Inspired by almost identical commit in mesa aead7fe2e2b(c11/threads: Use |
| PTHREAD_MUTEX_RECURSIVE by default) by Felix Janda. |
| |
| Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> |
| Reviewed-by: Chad Versace <chad.versace@intel.com> |
| (Romain: cherry picked from commit 3b9b8f5f6d1b99af43e95ec0868404e552a85b73) |
| Signed-off-by: Romain Naour <romain.naour@gmail.com> |
| --- |
| third_party/threads/threads_posix.c | 10 ++++------ |
| 1 file changed, 4 insertions(+), 6 deletions(-) |
| |
| diff --git a/third_party/threads/threads_posix.c b/third_party/threads/threads_posix.c |
| index 5835e43..e122bf9 100644 |
| --- a/third_party/threads/threads_posix.c |
| +++ b/third_party/threads/threads_posix.c |
| @@ -26,6 +26,9 @@ |
| * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
| * DEALINGS IN THE SOFTWARE. |
| */ |
| + |
| +#define _GNU_SOURCE |
| + |
| #include <stdlib.h> |
| #ifndef assert |
| #include <assert.h> |
| @@ -150,13 +153,8 @@ int mtx_init(mtx_t *mtx, int type) |
| && type != (mtx_try|mtx_recursive)) |
| return thrd_error; |
| pthread_mutexattr_init(&attr); |
| - if ((type & mtx_recursive) != 0) { |
| -#if defined(__linux__) || defined(__linux) |
| - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP); |
| -#else |
| + if ((type & mtx_recursive) != 0) |
| pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); |
| -#endif |
| - } |
| pthread_mutex_init(mtx, &attr); |
| pthread_mutexattr_destroy(&attr); |
| return thrd_success; |
| -- |
| 2.14.3 |
| |