From b6a6283ce48af09bf833f0622988d464ecc5104c Mon Sep 17 00:00:00 2001 From: Timur Iskhakov Date: Mon, 10 Jul 2017 10:08:38 -0700 Subject: [PATCH] Add configureRpcThreadpool to java interface Bug: 36233029 Test: links, compiles, hidl_test_java Change-Id: I7e2ec88b2098886983b1d93ab100a77db63f3976 --- core/java/android/os/HwBinder.java | 5 +++++ core/jni/android_os_HwBinder.cpp | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) 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 4fc8e1109bc0..dc16220e7f84 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 using Return = android::hardware::Return; @@ -393,6 +395,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 }, @@ -406,6 +417,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 { -- 2.11.0