1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-23091: perfschema Add support for OpenBSD's getthrid() to retrieve the thread id

This commit is contained in:
Brad Smith
2020-08-07 00:00:40 -04:00
committed by Daniel Black
parent fe5dbfe723
commit 482cf29e16
3 changed files with 16 additions and 0 deletions

View File

@@ -298,6 +298,16 @@ int main(int ac, char **av)
}" }"
HAVE_SYS_GETTID) HAVE_SYS_GETTID)
# Check for getthrid()
CHECK_C_SOURCE_COMPILES("
#include <unistd.h>
int main(int ac, char **av)
{
unsigned long long tid = getthrid();
return (tid != 0 ? 0 : 1);
}"
HAVE_GETTHRID)
# Check for pthread_getthreadid_np() # Check for pthread_getthreadid_np()
CHECK_C_SOURCE_COMPILES(" CHECK_C_SOURCE_COMPILES("
#include <pthread_np.h> #include <pthread_np.h>

View File

@@ -67,6 +67,10 @@ static inline my_thread_os_id_t my_thread_os_id()
/* FreeBSD 10.2 */ /* FreeBSD 10.2 */
return pthread_getthreadid_np(); return pthread_getthreadid_np();
#else #else
#ifdef HAVE_GETTHRID
/* OpenBSD */
return getthrid();
#else
#ifdef HAVE_INTEGER_PTHREAD_SELF #ifdef HAVE_INTEGER_PTHREAD_SELF
/* Unknown platform, fallback. */ /* Unknown platform, fallback. */
return pthread_self(); return pthread_self();
@@ -74,6 +78,7 @@ static inline my_thread_os_id_t my_thread_os_id()
/* Feature not available. */ /* Feature not available. */
return 0; return 0;
#endif /* HAVE_INTEGER_PTHREAD_SELF */ #endif /* HAVE_INTEGER_PTHREAD_SELF */
#endif /* HAVE_GETTHRID */
#endif /* HAVE_PTHREAD_GETTHREADID_NP */ #endif /* HAVE_PTHREAD_GETTHREADID_NP */
#endif /* _WIN32 */ #endif /* _WIN32 */
#endif /* HAVE_SYS_GETTID */ #endif /* HAVE_SYS_GETTID */

View File

@@ -1,4 +1,5 @@
#cmakedefine HAVE_PTHREAD_THREADID_NP 1 #cmakedefine HAVE_PTHREAD_THREADID_NP 1
#cmakedefine HAVE_SYS_GETTID 1 #cmakedefine HAVE_SYS_GETTID 1
#cmakedefine HAVE_GETTHRID 1
#cmakedefine HAVE_PTHREAD_GETTHREADID_NP 1 #cmakedefine HAVE_PTHREAD_GETTHREADID_NP 1
#cmakedefine HAVE_INTEGER_PTHREAD_SELF 1 #cmakedefine HAVE_INTEGER_PTHREAD_SELF 1