HADOOP-11638. OpensslSecureRandom.c pthreads_thread_id should support FreeBSD and Solaris in addition to Linux. Contributed by Kiran Kumar M R.

(cherry picked from commit 72cd4e4a4e)
This commit is contained in:
cnauroth 2015-03-16 13:26:57 -07:00
parent 0e9f78dda2
commit f492fc7b2c
2 changed files with 20 additions and 1 deletions

View File

@ -691,6 +691,9 @@ Release 2.7.0 - UNRELEASED
HADOOP-11558. Fix dead links to doc of hadoop-tools. (Jean-Pierre
Matsumoto via ozawa)
HADOOP-11638. OpensslSecureRandom.c pthreads_thread_id should support FreeBSD
and Solaris in addition to Linux. (Kiran Kumar M R via cnauroth)
Release 2.6.1 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -29,6 +29,10 @@
#include <sys/types.h>
#endif
#if defined(__FreeBSD__)
#include <pthread_np.h>
#endif
#ifdef WINDOWS
#include <windows.h>
#endif
@ -274,7 +278,19 @@ static void pthreads_locking_callback(int mode, int type, char *file, int line)
static unsigned long pthreads_thread_id(void)
{
return (unsigned long)syscall(SYS_gettid);
unsigned long thread_id = 0;
#if defined(__linux__)
thread_id = (unsigned long)syscall(SYS_gettid);
#elif defined(__FreeBSD__)
thread_id = (unsigned long)pthread_getthreadid_np();
#elif defined(__sun)
thread_id = (unsigned long)pthread_self();
#elif defined(__APPLE__)
(void)pthread_threadid_np(pthread_self(), &thread_id);
#else
#error "Platform not supported"
#endif
return thread_id;
}
#endif /* UNIX */