| From 0dfb289a3b362b082ac3608d887e42f09dadc0d2 Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| Date: Mon, 31 Dec 2018 16:22:07 +0100 |
| Subject: [PATCH] Properly detect the availability of pthread_setname_np() |
| |
| This commit adds a CMake check for the availability of |
| pthread_setname_np(), and only uses it on Linux when available. |
| |
| Indeed, some C libraries, such as uClibc, do not provide this |
| non-POSIX function in all cases. |
| |
| Upstream: https://github.com/grpc/grpc/pull/17610 |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| |
| [buildroot@heine.tech: |
| 1.42.0 added new logic to handle older glibc without pthread_setname_np() |
| but is still not sufficient for all cases. So alter the patch to wrap all |
| this with our cmake based workaround. |
| See: https://github.com/grpc/grpc/pull/27540 |
| ] |
| Signed-off-by: Michael Nosthoff <buildroot@heine.tech> |
| --- |
| CMakeLists.txt | 6 ++++++ |
| include/grpc/impl/codegen/port_platform.h | 2 ++ |
| 2 files changed, 8 insertions(+) |
| |
| diff --git a/CMakeLists.txt b/CMakeLists.txt |
| index 45c2fcb..0b2be4f 100644 |
| --- a/CMakeLists.txt |
| +++ b/CMakeLists.txt |
| @@ -208,6 +208,12 @@ if (NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE) |
| endif() |
| list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") |
| |
| +include(CheckSymbolExists) |
| +check_symbol_exists(pthread_setname_np pthread.h HAVE_PTHREAD_SETNAME_NP) |
| +if (HAVE_PTHREAD_SETNAME_NP) |
| + add_definitions(-DHAVE_PTHREAD_SETNAME_NP) |
| +endif () |
| + |
| if(MSVC) |
| include(cmake/msvc_static_runtime.cmake) |
| add_definitions(-D_WIN32_WINNT=0x600 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS) |
| diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h |
| index 4f213ff..55ecd9d 100644 |
| --- a/include/grpc/impl/codegen/port_platform.h |
| +++ b/include/grpc/impl/codegen/port_platform.h |
| @@ -186,6 +186,7 @@ |
| #endif /* _LP64 */ |
| #ifdef __GLIBC__ |
| #define GPR_POSIX_CRASH_HANDLER 1 |
| +#if defined(HAVE_PTHREAD_SETNAME_NP) |
| #ifdef __GLIBC_PREREQ |
| #if __GLIBC_PREREQ(2, 12) |
| #define GPR_LINUX_PTHREAD_NAME 1 |
| @@ -194,6 +195,7 @@ |
| // musl libc & others |
| #define GPR_LINUX_PTHREAD_NAME 1 |
| #endif |
| +#endif /* HAVE_PTHREAD_SETNAME_NP */ |
| #include <linux/version.h> |
| #else /* musl libc */ |
| #define GPR_MUSL_LIBC_COMPAT 1 |
| |
| -- |
| 2.26.63 |