diff options
| author | 2017-07-13 19:27:37 +0000 | |
|---|---|---|
| committer | 2017-07-13 19:27:37 +0000 | |
| commit | 9cdec3943ca6752046c880051704dbb37b2faf18 (patch) | |
| tree | f899228f68e897e8bd288a1f698326af6d0c0a4c | |
| parent | 3a6b550753497924ef6e6d07f73f7c15f8c0e324 (diff) | |
| parent | 791a698a6a5f6c6e8b37f43c38f0027af9ee70be (diff) | |
Merge "Add configureRpcThreadpool to java interface" am: d8dab11547
am: 791a698a6a
Change-Id: I9b98013a894aa01268ed69a14c6b425e04771936
| -rw-r--r-- | core/java/android/os/HwBinder.java | 5 | ||||
| -rw-r--r-- | core/jni/android_os_HwBinder.cpp | 17 |
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 { |