From 0dfb289a3b362b082ac3608d887e42f09dadc0d2 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni 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 [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 --- 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 #else /* musl libc */ #define GPR_MUSL_LIBC_COMPAT 1 -- 2.26.63