Skip to content

Commit 90adf2a

Browse files
committed
perfschema: use glibc gettid if available
1 parent 68eac8a commit 90adf2a

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

cmake/os/WindowsCache.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ SET(HAVE_SCHED_GETCPU CACHE INTERNAL "")
322322
SET(HAVE_NANOSLEEP CACHE INTERNAL "")
323323
SET(HAVE_PTHREAD_THREADID_NP CACHE INTERNAL "")
324324
SET(HAVE_SYS_GETTID CACHE INTERNAL "")
325+
SET(HAVE_GETTID CACHE INTERNAL "")
325326
SET(HAVE_INTEGER_PTHREAD_SELF CACHE INTERNAL "")
326327
SET(HAVE_PTHREAD_GETTHREADID_NP CACHE INTERNAL "")
327328
SET(HAVE_TIMER_DELETE CACHE INTERNAL "")

storage/perfschema/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,9 @@ int main(int ac, char **av)
290290
}"
291291
HAVE_PTHREAD_THREADID_NP)
292292

293+
# gettid() library function (glibc-2.30+)
294+
CHECK_SYMBOL_EXISTS(gettid unistd.h HAVE_GETTID)
295+
293296
# Check for gettid() system call
294297
CHECK_C_SOURCE_COMPILES("
295298
#include <sys/types.h>

storage/perfschema/my_thread.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@ static inline my_thread_os_id_t my_thread_os_id()
5050
pthread_threadid_np(nullptr, &tid64);
5151
return (pid_t)tid64;
5252
#else
53+
#ifdef HAVE_GETTID
54+
/* Linux glibc-2.30+ */
55+
return gettid();
56+
#else
5357
#ifdef HAVE_SYS_GETTID
5458
/*
55-
Linux.
59+
Linux before glibc-2.30
5660
See man gettid
57-
See GLIBC Bug 6399 - gettid() should have a wrapper
58-
https://sourceware.org/bugzilla/show_bug.cgi?id=6399
5961
*/
6062
return syscall(SYS_gettid);
6163
#else
@@ -82,7 +84,8 @@ static inline my_thread_os_id_t my_thread_os_id()
8284
#endif /* HAVE_PTHREAD_GETTHREADID_NP */
8385
#endif /* _WIN32 */
8486
#endif /* HAVE_SYS_GETTID */
85-
#endif /* HAVE_SYS_THREAD_SELFID */
87+
#endif /* HAVE_GETTID */
88+
#endif /* HAVE_PTHREAD_THREADID_NP */
8689
}
8790

8891
#define CHANNEL_NAME_LENGTH MAX_CONNECTION_NAME
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#cmakedefine HAVE_PTHREAD_THREADID_NP 1
22
#cmakedefine HAVE_SYS_GETTID 1
3+
#cmakedefine HAVE_GETTID
34
#cmakedefine HAVE_GETTHRID 1
45
#cmakedefine HAVE_PTHREAD_GETTHREADID_NP 1
56
#cmakedefine HAVE_INTEGER_PTHREAD_SELF 1

0 commit comments

Comments
 (0)