diff options
author | Dan Albert <danalbert@google.com> | 2015-04-29 17:13:32 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2015-05-13 13:43:32 -0700 |
commit | cd206b3900639c44767cd892bccfbffabf222f67 (patch) | |
tree | 6e6d026aa1f4583f835f4610af7ad40e3ad31b6a | |
parent | b33118ac7603b459d690f524e0c64161f8ab5c0d (diff) | |
download | system_core-cd206b3900639c44767cd892bccfbffabf222f67.zip system_core-cd206b3900639c44767cd892bccfbffabf222f67.tar.gz system_core-cd206b3900639c44767cd892bccfbffabf222f67.tar.bz2 |
Fix gettid() on Windows.
Accidentally had this all hidden by an #ifndef _WIN32 when I wrote it.
Bug: 19517541
(cherry picked from commit b3a36ca5ee79411c18984b85b224d9285b4468af)
Change-Id: Ifbd5d19e506e7313700e2e29a2dae5736e049844
-rw-r--r-- | include/cutils/threads.h | 17 | ||||
-rw-r--r-- | libcutils/threads.c | 42 |
2 files changed, 31 insertions, 28 deletions
diff --git a/include/cutils/threads.h b/include/cutils/threads.h index 3133cdb..5727494 100644 --- a/include/cutils/threads.h +++ b/include/cutils/threads.h @@ -17,6 +17,14 @@ #ifndef _LIBS_CUTILS_THREADS_H #define _LIBS_CUTILS_THREADS_H +#include <sys/types.h> + +#if !defined(_WIN32) +#include <pthread.h> +#else +#include <windows.h> +#endif + #ifdef __cplusplus extern "C" { #endif @@ -29,10 +37,9 @@ extern "C" { /***********************************************************************/ /***********************************************************************/ -#if !defined(_WIN32) +extern pid_t gettid(); -#include <pthread.h> -#include <sys/types.h> +#if !defined(_WIN32) typedef struct { pthread_mutex_t lock; @@ -40,14 +47,10 @@ typedef struct { pthread_key_t tls; } thread_store_t; -extern pid_t gettid(); - #define THREAD_STORE_INITIALIZER { PTHREAD_MUTEX_INITIALIZER, 0, 0 } #else // !defined(_WIN32) -#include <windows.h> - typedef struct { int lock_init; int has_tls; diff --git a/libcutils/threads.c b/libcutils/threads.c index 5f5577b..3d8dd48 100644 --- a/libcutils/threads.c +++ b/libcutils/threads.c @@ -16,8 +16,6 @@ #include "cutils/threads.h" -#if !defined(_WIN32) - // For gettid. #if defined(__APPLE__) #include "AvailabilityMacros.h" // For MAC_OS_X_VERSION_MAX_ALLOWED @@ -30,9 +28,29 @@ #include <syscall.h> #include <unistd.h> #elif defined(_WIN32) -#include <Windows.h> +#include <windows.h> #endif +// No definition needed for Android because we'll just pick up bionic's copy. +#ifndef __ANDROID__ +pid_t gettid() { +#if defined(__APPLE__) + uint64_t owner; + int rc = pthread_threadid_np(NULL, &owner); + if (rc != 0) { + abort(); + } + return owner; +#elif defined(__linux__) + return syscall(__NR_gettid); +#elif defined(_WIN32) + return GetCurrentThreadId(); +#endif +} +#endif // __ANDROID__ + +#if !defined(_WIN32) + void* thread_store_get( thread_store_t* store ) { if (!store->has_tls) @@ -58,24 +76,6 @@ extern void thread_store_set( thread_store_t* store, pthread_setspecific( store->tls, value ); } -// No definition needed for Android because we'll just pick up bionic's copy. -#ifndef __ANDROID__ -pid_t gettid() { -#if defined(__APPLE__) - uint64_t owner; - int rc = pthread_threadid_np(NULL, &owner); - if (rc != 0) { - abort(); - } - return owner; -#elif defined(__linux__) - return syscall(__NR_gettid); -#elif defined(_WIN32) - return (pid_t)GetCurrentThreadId(); -#endif -} -#endif // __ANDROID__ - #else /* !defined(_WIN32) */ void* thread_store_get( thread_store_t* store ) { |