You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cn...@apache.org on 2013/07/24 00:17:14 UTC
svn commit: r1506332 - in
/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common:
CHANGES.txt src/main/native/src/org/apache/hadoop/util/NativeCodeLoader.c
Author: cnauroth
Date: Tue Jul 23 22:17:13 2013
New Revision: 1506332
URL: http://svn.apache.org/r1506332
Log:
HADOOP-9759. Merging change r1506329 from branch-2 to branch-2.1-beta.
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/NativeCodeLoader.c
Modified: hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1506332&r1=1506331&r2=1506332&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/CHANGES.txt Tue Jul 23 22:17:13 2013
@@ -335,6 +335,9 @@ Release 2.1.0-beta - 2013-07-02
HADOOP-9738. TestDistCh fails. (jing9 via kihwal)
+ HADOOP-9759. Add support for NativeCodeLoader#getLibraryName on Windows.
+ (Chuan Liu via cnauroth)
+
BREAKDOWN OF HADOOP-8562 SUBTASKS AND RELATED JIRAS
HADOOP-8924. Hadoop Common creating package-info.java must not depend on
Modified: hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/NativeCodeLoader.c
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/NativeCodeLoader.c?rev=1506332&r1=1506331&r2=1506332&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/NativeCodeLoader.c (original)
+++ hadoop/common/branches/branch-2.1-beta/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/util/NativeCodeLoader.c Tue Jul 23 22:17:13 2013
@@ -38,9 +38,41 @@ JNIEXPORT jboolean JNICALL Java_org_apac
JNIEXPORT jstring JNICALL Java_org_apache_hadoop_util_NativeCodeLoader_getLibraryName
(JNIEnv *env, jclass clazz)
{
+#ifdef UNIX
Dl_info dl_info;
int ret = dladdr(
Java_org_apache_hadoop_util_NativeCodeLoader_getLibraryName,
&dl_info);
return (*env)->NewStringUTF(env, ret==0 ? "Unavailable" : dl_info.dli_fname);
+#endif
+
+#ifdef WINDOWS
+ SIZE_T ret = 0;
+ DWORD size = MAX_PATH;
+ LPWSTR filename = NULL;
+ HMODULE mod = NULL;
+ DWORD err = ERROR_SUCCESS;
+
+ MEMORY_BASIC_INFORMATION mbi;
+ ret = VirtualQuery(Java_org_apache_hadoop_util_NativeCodeLoader_getLibraryName,
+ &mbi, sizeof(mbi));
+ if (ret == 0) goto cleanup;
+ mod = mbi.AllocationBase;
+
+ do {
+ filename = (LPWSTR) realloc(filename, size * sizeof(WCHAR));
+ if (filename == NULL) goto cleanup;
+ GetModuleFileName(mod, filename, size);
+ size <<= 1;
+ err = GetLastError();
+ } while (err == ERROR_INSUFFICIENT_BUFFER);
+
+ if (err != ERROR_SUCCESS) goto cleanup;
+
+ return (*env)->NewString(env, filename, (jsize) wcslen(filename));
+
+cleanup:
+ if (filename != NULL) free(filename);
+ return (*env)->NewStringUTF(env, "Unavailable");
+#endif
}