Merge "nativeloader: Add Reset capabilities"
am: 27d75e8bc1
* commit '27d75e8bc11985e2f3de5aa2811749f53a109a41':
nativeloader: Add Reset capabilities
Change-Id: I32eb61966c3cdbeef3ac909fcd402447929af40e
diff --git a/libnativeloader/include/nativeloader/native_loader.h b/libnativeloader/include/nativeloader/native_loader.h
index 1bd3b8f..d606a76 100644
--- a/libnativeloader/include/nativeloader/native_loader.h
+++ b/libnativeloader/include/nativeloader/native_loader.h
@@ -50,6 +50,9 @@
android_namespace_t* FindNamespaceByClassLoader(JNIEnv* env, jobject class_loader);
#endif
+__attribute__((visibility("default")))
+void ResetNativeLoader();
+
}; // namespace android
#endif // NATIVE_BRIDGE_H_
diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp
index e20c823..72152e7 100644
--- a/libnativeloader/native_loader.cpp
+++ b/libnativeloader/native_loader.cpp
@@ -121,6 +121,10 @@
public_libraries_ = base::Join(sonames, ':');
}
+ void Reset() {
+ namespaces_.clear();
+ }
+
private:
bool ReadConfig(const std::string& configFile, std::vector<std::string>* sonames) {
// Read list of public native libraries from the config file.
@@ -172,6 +176,12 @@
#endif
}
+void ResetNativeLoader() {
+#if defined(__ANDROID__)
+ std::lock_guard<std::mutex> guard(g_namespaces_mutex);
+ g_namespaces->Reset();
+#endif
+}
jstring CreateClassLoaderNamespace(JNIEnv* env,
int32_t target_sdk_version,