From 482cf29e168673f68196a235aff00fc741bf71da Mon Sep 17 00:00:00 2001 From: Brad Smith Date: Fri, 7 Aug 2020 00:00:40 -0400 Subject: [PATCH] MDEV-23091: perfschema Add support for OpenBSD's getthrid() to retrieve the thread id --- storage/perfschema/CMakeLists.txt | 10 ++++++++++ storage/perfschema/my_thread.h | 5 +++++ storage/perfschema/pfs_config.h.cmake | 1 + 3 files changed, 16 insertions(+) diff --git a/storage/perfschema/CMakeLists.txt b/storage/perfschema/CMakeLists.txt index c871677d0a9..a40e5ba6206 100644 --- a/storage/perfschema/CMakeLists.txt +++ b/storage/perfschema/CMakeLists.txt @@ -298,6 +298,16 @@ int main(int ac, char **av) }" HAVE_SYS_GETTID) +# Check for getthrid() +CHECK_C_SOURCE_COMPILES(" +#include +int main(int ac, char **av) +{ + unsigned long long tid = getthrid(); + return (tid != 0 ? 0 : 1); +}" +HAVE_GETTHRID) + # Check for pthread_getthreadid_np() CHECK_C_SOURCE_COMPILES(" #include diff --git a/storage/perfschema/my_thread.h b/storage/perfschema/my_thread.h index 12e01a510ed..b9f3f7775ff 100644 --- a/storage/perfschema/my_thread.h +++ b/storage/perfschema/my_thread.h @@ -67,6 +67,10 @@ static inline my_thread_os_id_t my_thread_os_id() /* FreeBSD 10.2 */ return pthread_getthreadid_np(); #else +#ifdef HAVE_GETTHRID + /* OpenBSD */ + return getthrid(); +#else #ifdef HAVE_INTEGER_PTHREAD_SELF /* Unknown platform, fallback. */ return pthread_self(); @@ -74,6 +78,7 @@ static inline my_thread_os_id_t my_thread_os_id() /* Feature not available. */ return 0; #endif /* HAVE_INTEGER_PTHREAD_SELF */ +#endif /* HAVE_GETTHRID */ #endif /* HAVE_PTHREAD_GETTHREADID_NP */ #endif /* _WIN32 */ #endif /* HAVE_SYS_GETTID */ diff --git a/storage/perfschema/pfs_config.h.cmake b/storage/perfschema/pfs_config.h.cmake index 0dc29da72d9..1b518fe3211 100644 --- a/storage/perfschema/pfs_config.h.cmake +++ b/storage/perfschema/pfs_config.h.cmake @@ -1,4 +1,5 @@ #cmakedefine HAVE_PTHREAD_THREADID_NP 1 #cmakedefine HAVE_SYS_GETTID 1 +#cmakedefine HAVE_GETTHRID 1 #cmakedefine HAVE_PTHREAD_GETTHREADID_NP 1 #cmakedefine HAVE_INTEGER_PTHREAD_SELF 1