From e5430976256a10c7ed727f7c7c96ff0bc1db4cde Mon Sep 17 00:00:00 2001 From: Marco Ballesio Date: Fri, 5 Feb 2021 11:32:39 -0800 Subject: [PATCH] CachedAppOptimizer: don't hardcode freezer path Test: verified that the freezer is correctly detected Bug: 168058155 Change-Id: Ia594282f62ce934d124fa5f89da75cd58fd6ed78 --- .../java/com/android/server/am/CachedAppOptimizer.java | 8 +++++++- .../jni/com_android_server_am_CachedAppOptimizer.cpp | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java index c18031fd6de60..9e6d647dc0140 100644 --- a/services/core/java/com/android/server/am/CachedAppOptimizer.java +++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java @@ -537,6 +537,12 @@ public final class CachedAppOptimizer { */ private static native int getBinderFreezeInfo(int pid); + /** + * Returns the path to be checked to verify whether the freezer is supported by this system. + * @return absolute path to the file + */ + private static native String getFreezerCheckPath(); + /** * Determines whether the freezer is supported by this system */ @@ -545,7 +551,7 @@ public final class CachedAppOptimizer { FileReader fr = null; try { - fr = new FileReader("/sys/fs/cgroup/uid_0/cgroup.freeze"); + fr = new FileReader(getFreezerCheckPath()); char state = (char) fr.read(); if (state == '1' || state == '0') { diff --git a/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp b/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp index 31cc295406a50..4551d49d9e58a 100644 --- a/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp +++ b/services/core/jni/com_android_server_am_CachedAppOptimizer.cpp @@ -278,6 +278,11 @@ static jint com_android_server_am_CachedAppOptimizer_getBinderFreezeInfo(JNIEnv return retVal; } +static jstring com_android_server_am_CachedAppOptimizer_getFreezerCheckPath(JNIEnv* env, + jobject clazz) { + return env->NewStringUTF(CGROUP_FREEZE_PATH); +} + static const JNINativeMethod sMethods[] = { /* name, signature, funcPtr */ {"compactSystem", "()V", (void*)com_android_server_am_CachedAppOptimizer_compactSystem}, @@ -286,7 +291,9 @@ static const JNINativeMethod sMethods[] = { (void*)com_android_server_am_CachedAppOptimizer_enableFreezerInternal}, {"freezeBinder", "(IZ)V", (void*)com_android_server_am_CachedAppOptimizer_freezeBinder}, {"getBinderFreezeInfo", "(I)I", - (void*)com_android_server_am_CachedAppOptimizer_getBinderFreezeInfo}}; + (void*)com_android_server_am_CachedAppOptimizer_getBinderFreezeInfo}, + {"getFreezerCheckPath", "()Ljava/lang/String;", + (void*)com_android_server_am_CachedAppOptimizer_getFreezerCheckPath}}; int register_android_server_am_CachedAppOptimizer(JNIEnv* env) {