[Openmp-commits] [openmp] 37e109c - [OpenMP] Support setting POSIX thread name on *BSD's and Solaris (#106489)

via Openmp-commits openmp-commits at lists.llvm.org
Sat Aug 31 13:53:36 PDT 2024


Author: Brad Smith
Date: 2024-08-31T16:53:33-04:00
New Revision: 37e109c6f86e7562a7f0b54a229f57e36b778f05

URL: https://github.com/llvm/llvm-project/commit/37e109c6f86e7562a7f0b54a229f57e36b778f05
DIFF: https://github.com/llvm/llvm-project/commit/37e109c6f86e7562a7f0b54a229f57e36b778f05.diff

LOG: [OpenMP] Support setting POSIX thread name on *BSD's and Solaris (#106489)

Added: 
    

Modified: 
    openmp/runtime/cmake/LibompDefinitions.cmake
    openmp/runtime/cmake/config-ix.cmake
    openmp/runtime/src/z_Linux_util.cpp

Removed: 
    


################################################################################
diff  --git a/openmp/runtime/cmake/LibompDefinitions.cmake b/openmp/runtime/cmake/LibompDefinitions.cmake
index c894be5870f705..1d8a88966d9393 100644
--- a/openmp/runtime/cmake/LibompDefinitions.cmake
+++ b/openmp/runtime/cmake/LibompDefinitions.cmake
@@ -23,8 +23,8 @@ function(libomp_get_definitions_flags cppflags)
   else()
     libomp_append(cppflags_local "-D _GNU_SOURCE")
     libomp_append(cppflags_local "-D _REENTRANT")
-    # or use HAVE_PTHREAD_SETNAME_NP from top-level cmake/config-ix.cmake
-    libomp_append(cppflags_local "-D LIBOMP_HAVE_LINUX_PTHREAD_SETNAME" LIBOMP_HAVE_LINUX_PTHREAD_SETNAME)
+    libomp_append(cppflags_local "-D LIBOMP_HAVE_PTHREAD_SETNAME_NP" LIBOMP_HAVE_PTHREAD_SETNAME_NP)
+    libomp_append(cppflags_local "-D LIBOMP_HAVE_PTHREAD_SET_NAME_NP" LIBOMP_HAVE_PTHREAD_SET_NAME_NP)
   endif()
 
   # CMake doesn't include CPPFLAGS from environment, but we will.

diff  --git a/openmp/runtime/cmake/config-ix.cmake b/openmp/runtime/cmake/config-ix.cmake
index 3adaf5bed68f33..ac2bbb902161ed 100644
--- a/openmp/runtime/cmake/config-ix.cmake
+++ b/openmp/runtime/cmake/config-ix.cmake
@@ -102,9 +102,8 @@ if(${LIBOMP_FORTRAN_MODULES})
 endif()
 
 # Check non-posix pthread API here before CMAKE_REQUIRED_DEFINITIONS gets messed up
-if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
-  check_symbol_exists(pthread_setname_np "pthread.h" LIBOMP_HAVE_LINUX_PTHREAD_SETNAME)
-endif()
+check_symbol_exists(pthread_setname_np "pthread.h" LIBOMP_HAVE_PTHREAD_SETNAME_NP)
+check_symbol_exists(pthread_set_name_np "pthread.h;pthread_np.h" LIBOMP_HAVE_PTHREAD_SET_NAME_NP)
 
 # Check for Unix shared memory
 check_symbol_exists(shm_open "sys/mman.h" LIBOMP_HAVE_SHM_OPEN_NO_LRT)

diff  --git a/openmp/runtime/src/z_Linux_util.cpp b/openmp/runtime/src/z_Linux_util.cpp
index 337a34518da2f6..bdb7a12cef5e9b 100644
--- a/openmp/runtime/src/z_Linux_util.cpp
+++ b/openmp/runtime/src/z_Linux_util.cpp
@@ -71,6 +71,9 @@
 #if KMP_OS_NETBSD
 #include <sched.h>
 #endif
+#if KMP_OS_OPENBSD
+#include <pthread_np.h>
+#endif
 #elif KMP_OS_SOLARIS
 #include <libproc.h>
 #include <procfs.h>
@@ -878,12 +881,18 @@ void __kmp_create_worker(int gtid, kmp_info_t *th, size_t stack_size) {
     KMP_SYSFAIL("pthread_create", status);
   }
 
-#ifdef LIBOMP_HAVE_LINUX_PTHREAD_SETNAME
   // Rename worker threads for improved debuggability
   if (!KMP_UBER_GTID(gtid)) {
+#if defined(LIBOMP_HAVE_PTHREAD_SET_NAME_NP)
+    pthread_set_name_np(handle, "openmp_worker");
+#elif defined(LIBOMP_HAVE_PTHREAD_SETNAME_NP) && !KMP_OS_DARWIN
+#if KMP_OS_NETBSD
+    pthread_setname_np(handle, "%s", const_cast<char *>("openmp_worker"));
+#else
     pthread_setname_np(handle, "openmp_worker");
-  }
 #endif
+#endif
+  }
 
   th->th.th_info.ds.ds_thread = handle;
 


        


More information about the Openmp-commits mailing list