summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Timur Iskhakov <iskhakovt@google.com> 2017-07-13 19:33:29 +0000
committer android-build-merger <android-build-merger@google.com> 2017-07-13 19:33:29 +0000
commit1cdcaa8cf3ef1ec14014b0e84af3b1cd383c25db (patch)
tree759df743cc6b27aae22546a8d70fc02bd4e4a042
parent886d8b1c0075aae1f9df546d04fc4e3dd8ed80c7 (diff)
parent9cdec3943ca6752046c880051704dbb37b2faf18 (diff)
Merge "Add configureRpcThreadpool to java interface" am: d8dab11547 am: 791a698a6a
am: 9cdec3943c Change-Id: Id3e2523a755e8ce207ac6bd85dbf6d5a69070207
-rw-r--r--core/java/android/os/HwBinder.java5
-rw-r--r--core/jni/android_os_HwBinder.cpp17
2 files changed, 22 insertions, 0 deletions
diff --git a/core/java/android/os/HwBinder.java b/core/java/android/os/HwBinder.java
index b09c51c50d26..866e20c26a0c 100644
--- a/core/java/android/os/HwBinder.java
+++ b/core/java/android/os/HwBinder.java
@@ -51,6 +51,11 @@ public abstract class HwBinder implements IHwBinder {
String serviceName)
throws RemoteException, NoSuchElementException;
+ public static native final void configureRpcThreadpool(
+ long maxThreads, boolean callerWillJoin);
+
+ public static native final void joinRpcThreadpool();
+
// Returns address of the "freeFunction".
private static native final long native_init();
diff --git a/core/jni/android_os_HwBinder.cpp b/core/jni/android_os_HwBinder.cpp
index 6c6fa66c422e..566312594d0b 100644
--- a/core/jni/android_os_HwBinder.cpp
+++ b/core/jni/android_os_HwBinder.cpp
@@ -42,6 +42,8 @@
using android::AndroidRuntime;
using android::hardware::hidl_vec;
using android::hardware::hidl_string;
+using android::hardware::IPCThreadState;
+using android::hardware::ProcessState;
template<typename T>
using Return = android::hardware::Return<T>;
@@ -395,6 +397,15 @@ static jobject JHwBinder_native_getService(
return JHwRemoteBinder::NewObject(env, service);
}
+void JHwBinder_native_configureRpcThreadpool(jlong maxThreads, jboolean callerWillJoin) {
+ CHECK(maxThreads > 0);
+ ProcessState::self()->setThreadPoolConfiguration(maxThreads, callerWillJoin /*callerJoinsPool*/);
+}
+
+void JHwBinder_native_joinRpcThreadpool() {
+ IPCThreadState::self()->joinThreadPool();
+}
+
static JNINativeMethod gMethods[] = {
{ "native_init", "()J", (void *)JHwBinder_native_init },
{ "native_setup", "()V", (void *)JHwBinder_native_setup },
@@ -408,6 +419,12 @@ static JNINativeMethod gMethods[] = {
{ "getService", "(Ljava/lang/String;Ljava/lang/String;)L" PACKAGE_PATH "/IHwBinder;",
(void *)JHwBinder_native_getService },
+
+ { "configureRpcThreadpool", "(JZ)V",
+ (void *)JHwBinder_native_configureRpcThreadpool },
+
+ { "joinRpcThreadpool", "()V",
+ (void *)JHwBinder_native_joinRpcThreadpool },
};
namespace android {