Skip to content

Commit d671882

Browse files
authored
Merge pull request #515 from ldorau/Use_syscallSYS_gettid_instead_of_gettid
Use utils_getpid() and utils_gettid() in util_log_internal()
2 parents b297e90 + 13b3b03 commit d671882

File tree

5 files changed

+32
-18
lines changed

5 files changed

+32
-18
lines changed

src/utils/utils_common.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ void util_align_ptr_size(void **ptr, size_t *size, size_t alignment);
7474
// get the current process ID
7575
int utils_getpid(void);
7676

77+
// get the current thread ID
78+
int utils_gettid(void);
79+
7780
#ifdef __cplusplus
7881
}
7982
#endif

src/utils/utils_log.c

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,8 @@ static void util_log_internal(util_log_level_t level, int perror,
7272
return;
7373
}
7474

75-
#if defined(_WIN32)
76-
DWORD pid = GetCurrentProcessId();
77-
DWORD tid = GetCurrentThreadId();
78-
#elif defined(__APPLE__)
79-
pid_t pid = getpid();
80-
uint64_t tid64;
81-
pthread_threadid_np(NULL, &tid64);
82-
pid_t tid = (pid_t)tid64;
83-
#else
84-
pid_t pid = getpid();
85-
pid_t tid = gettid();
86-
#endif
75+
int pid = utils_getpid();
76+
int tid = utils_gettid();
8777

8878
char buffer[LOG_MAX];
8979
char *b_pos = buffer;

src/utils/utils_posix_common.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,16 @@ size_t util_get_page_size(void) {
2525
}
2626

2727
int utils_getpid(void) { return getpid(); }
28+
29+
int utils_gettid(void) {
30+
#ifdef __APPLE__
31+
uint64_t tid64;
32+
pthread_threadid_np(NULL, &tid64);
33+
return (int)tid64;
34+
#else
35+
// Some older OSes does not have
36+
// the gettid() function implemented,
37+
// so let's use the syscall instead:
38+
return syscall(SYS_gettid);
39+
#endif
40+
}

src/utils/utils_windows_common.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <windows.h>
1111

1212
#include <processenv.h>
13+
#include <processthreadsapi.h>
1314

1415
#include "utils_concurrency.h"
1516

@@ -28,4 +29,7 @@ size_t util_get_page_size(void) {
2829
util_init_once(&Page_size_is_initialized, _util_get_page_size);
2930
return Page_size;
3031
}
32+
3133
int utils_getpid(void) { return GetCurrentProcessId(); }
34+
35+
int utils_gettid(void) { return GetCurrentThreadId(); }

test/CMakeLists.txt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,18 @@ add_umf_test(NAME memoryProvider SRCS memoryProviderAPI.cpp)
9393
if(UMF_BUILD_SHARED_LIBRARY)
9494
# if build as shared library, utils symbols won't be visible in tests
9595
set(UMF_UTILS_FOR_TEST umf_utils)
96+
if(LINUX OR MACOSX)
97+
set(UMF_UTILS_SOURCES
98+
../src/utils/utils_common.c ../src/utils/utils_posix_common.c
99+
../src/utils/utils_posix_concurrency.c)
100+
elseif(WINDOWS)
101+
set(UMF_UTILS_SOURCES
102+
../src/utils/utils_common.c ../src/utils/utils_windows_common.c
103+
../src/utils/utils_windows_concurrency.c)
104+
endif()
96105
endif()
97106

98-
if(UMF_BUILD_SHARED_LIBRARY)
99-
add_umf_test(NAME logger SRCS utils/utils_log.cpp
100-
../src/utils/utils_common.c)
101-
else()
102-
add_umf_test(NAME logger SRCS utils/utils_log.cpp)
103-
endif()
107+
add_umf_test(NAME logger SRCS utils/utils_log.cpp ${UMF_UTILS_SOURCES})
104108

105109
add_umf_test(
106110
NAME utils_common

0 commit comments

Comments
 (0)