summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Timur Iskhakov <iskhakovt@google.com> 2017-07-13 19:39:36 +0000
committer android-build-merger <android-build-merger@google.com> 2017-07-13 19:39:36 +0000
commit221024beadd494db8d16be40dd4e57ae210e6557 (patch)
treee89112d453d432564ae76f8baa617bf1534b729d
parent8166d8b2c357aa7a610f0e7ba5cb88bf2c7f2c1d (diff)
parent1cdcaa8cf3ef1ec14014b0e84af3b1cd383c25db (diff)
Merge "Add configureRpcThreadpool to java interface" am: d8dab11547 am: 791a698a6a am: 9cdec3943c
am: 1cdcaa8cf3 Change-Id: Iea02cb61c0a77eb3d94b9ebe63687457b6a5032c
-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 {