diff options
-rw-r--r-- | Android.bp | 2 | ||||
-rw-r--r-- | core/java/com/android/internal/os/KernelWakelockReader.java | 13 | ||||
-rw-r--r-- | core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java | 4 | ||||
-rw-r--r-- | services/core/jni/Android.bp | 3 | ||||
-rw-r--r-- | services/core/jni/com_android_server_power_PowerManagerService.cpp | 19 |
5 files changed, 29 insertions, 12 deletions
diff --git a/Android.bp b/Android.bp index 8c8b29baf2f1..eb1718efbef6 100644 --- a/Android.bp +++ b/Android.bp @@ -447,7 +447,6 @@ java_library { name: "framework-internal-utils", static_libs: [ "apex_aidl_interface-java", - "suspend_control_aidl_interface-java", "framework-protos", "updatable-driver-protos", "android.hidl.base-V1.0-java", @@ -481,6 +480,7 @@ java_library { "android.hardware.vibrator-V1.2-java", "android.hardware.vibrator-V1.3-java", "android.system.keystore2-java", + "android.system.suspend.control.internal-java", "devicepolicyprotosnano", "com.android.sysprop.apex", diff --git a/core/java/com/android/internal/os/KernelWakelockReader.java b/core/java/com/android/internal/os/KernelWakelockReader.java index 3d35d2fbaa82..f668bbaf9438 100644 --- a/core/java/com/android/internal/os/KernelWakelockReader.java +++ b/core/java/com/android/internal/os/KernelWakelockReader.java @@ -21,8 +21,8 @@ import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; import android.os.StrictMode; import android.os.SystemClock; -import android.system.suspend.ISuspendControlService; -import android.system.suspend.WakeLockInfo; +import android.system.suspend.internal.ISuspendControlServiceInternal; +import android.system.suspend.internal.WakeLockInfo; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; @@ -66,7 +66,7 @@ public class KernelWakelockReader { private final String[] mProcWakelocksName = new String[3]; private final long[] mProcWakelocksData = new long[3]; - private ISuspendControlService mSuspendControlService = null; + private ISuspendControlServiceInternal mSuspendControlService = null; private byte[] mKernelWakelockBuffer = new byte[32 * 1024]; /** @@ -155,11 +155,12 @@ public class KernelWakelockReader { /** * Attempt to wait for suspend_control service if not immediately available. */ - private ISuspendControlService waitForSuspendControlService() throws ServiceNotFoundException { - final String name = "suspend_control"; + private ISuspendControlServiceInternal waitForSuspendControlService() + throws ServiceNotFoundException { + final String name = "suspend_control_internal"; final int numRetries = 5; for (int i = 0; i < numRetries; i++) { - mSuspendControlService = ISuspendControlService.Stub.asInterface( + mSuspendControlService = ISuspendControlServiceInternal.Stub.asInterface( ServiceManager.getService(name)); if (mSuspendControlService != null) { return mSuspendControlService; diff --git a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java index dc9208de7198..7306b45aaa98 100644 --- a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java +++ b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java @@ -16,14 +16,14 @@ package com.android.internal.os; +import android.system.suspend.internal.WakeLockInfo; + import androidx.test.filters.SmallTest; import junit.framework.TestCase; import java.nio.charset.Charset; -import android.system.suspend.WakeLockInfo; - public class KernelWakelockReaderTest extends TestCase { /** * Helper class that builds the mock Kernel module file /d/wakeup_sources. diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index e8972742f8e2..982cf9f50bba 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -161,9 +161,10 @@ cc_defaults { "android.frameworks.schedulerservice@1.0", "android.frameworks.sensorservice@1.0", "android.frameworks.stats@1.0", + "android.system.suspend.control-cpp", + "android.system.suspend.control.internal-cpp", "android.system.suspend@1.0", "service.incremental", - "suspend_control_aidl_interface-cpp", ], static_libs: [ diff --git a/services/core/jni/com_android_server_power_PowerManagerService.cpp b/services/core/jni/com_android_server_power_PowerManagerService.cpp index 469838357f30..5fde550dc19d 100644 --- a/services/core/jni/com_android_server_power_PowerManagerService.cpp +++ b/services/core/jni/com_android_server_power_PowerManagerService.cpp @@ -24,6 +24,7 @@ #include <android/hardware/power/Mode.h> #include <android/system/suspend/1.0/ISystemSuspend.h> #include <android/system/suspend/ISuspendControlService.h> +#include <android/system/suspend/internal/ISuspendControlServiceInternal.h> #include <nativehelper/JNIHelp.h> #include "jni.h" @@ -355,6 +356,8 @@ void android_server_PowerManagerService_userActivity(nsecs_t eventTime, int32_t static sp<ISystemSuspend> gSuspendHal = nullptr; static sp<ISuspendControlService> gSuspendControl = nullptr; +static sp<system::suspend::internal::ISuspendControlServiceInternal> gSuspendControlInternal = + nullptr; static sp<IWakeLock> gSuspendBlocker = nullptr; static std::mutex gSuspendMutex; @@ -379,10 +382,22 @@ sp<ISuspendControlService> getSuspendControl() { return gSuspendControl; } +sp<system::suspend::internal::ISuspendControlServiceInternal> getSuspendControlInternal() { + static std::once_flag suspendControlFlag; + std::call_once(suspendControlFlag, []() { + gSuspendControlInternal = + waitForService<system::suspend::internal::ISuspendControlServiceInternal>( + String16("suspend_control_internal")); + LOG_ALWAYS_FATAL_IF(gSuspendControlInternal == nullptr); + }); + return gSuspendControlInternal; +} + void enableAutoSuspend() { static bool enabled = false; if (!enabled) { - sp<ISuspendControlService> suspendControl = getSuspendControl(); + sp<system::suspend::internal::ISuspendControlServiceInternal> suspendControl = + getSuspendControlInternal(); suspendControl->enableAutosuspend(&enabled); } @@ -515,7 +530,7 @@ static void nativeSetFeature(JNIEnv* /* env */, jclass /* clazz */, jint feature static bool nativeForceSuspend(JNIEnv* /* env */, jclass /* clazz */) { bool retval = false; - getSuspendControl()->forceSuspend(&retval); + getSuspendControlInternal()->forceSuspend(&retval); return retval; } |