diff options
author | 2017-07-13 19:39:36 +0000 | |
---|---|---|
committer | 2017-07-13 19:39:36 +0000 | |
commit | 221024beadd494db8d16be40dd4e57ae210e6557 (patch) | |
tree | e89112d453d432564ae76f8baa617bf1534b729d | |
parent | 8166d8b2c357aa7a610f0e7ba5cb88bf2c7f2c1d (diff) | |
parent | 1cdcaa8cf3ef1ec14014b0e84af3b1cd383c25db (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.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 { |