From 3241fc2b17f11e621d8ffb6160caa4b850c278b6 Mon Sep 17 00:00:00 2001 From: Colin Patrick Mccabe Date: Mon, 9 Mar 2015 12:56:33 -0700 Subject: [PATCH] HADOOP-11638. OpensslSecureRandom.c pthreads_thread_id should support FreeBSD and Solaris in addition to Linux (Kiran Kumar M R via Colin P. McCabe) --- hadoop-common-project/hadoop-common/CHANGES.txt | 4 ++++ .../hadoop/crypto/random/OpensslSecureRandom.c | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index d5a8463660b..0fe5b7c2fc8 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -671,6 +671,10 @@ Release 2.7.0 - UNRELEASED HADOOP-11642. Upgrade azure sdk version from 0.6.0 to 2.0.0. (Shashank Khandelwal and Ivan Mitic via cnauroth) + HADOOP-11638. OpensslSecureRandom.c pthreads_thread_id should support + FreeBSD and Solaris in addition to Linux (Kiran Kumar M R via Colin P. + McCabe) + OPTIMIZATIONS HADOOP-11323. WritableComparator#compare keeps reference to byte array. diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/random/OpensslSecureRandom.c b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/random/OpensslSecureRandom.c index 6c31d10599c..f30ccbee663 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/random/OpensslSecureRandom.c +++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/crypto/random/OpensslSecureRandom.c @@ -29,6 +29,10 @@ #include #endif +#if defined(__FreeBSD__) +#include +#endif + #ifdef WINDOWS #include #endif @@ -274,7 +278,17 @@ 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(); +#else +#error "Platform not supported" +#endif + return thread_id; } #endif /* UNIX */