Loading core/java/android/os/Process.java +13 −0 Original line number Diff line number Diff line Loading @@ -930,6 +930,19 @@ public class Process { */ public static final native void setProcessFrozen(int pid, int uid, boolean frozen); /** * Enable or disable the freezer. When enable == false all frozen processes are unfrozen, * but aren't removed from the freezer. Processes can still be added or removed * by using setProcessFrozen, but they won't actually be frozen until the freezer is enabled * again. If enable == true the freezer is enabled again, and all processes * in the freezer (including the ones added while the freezer was disabled) are frozen. * * @param enable Specify whether to enable (true) or disable (false) the freezer. * * @hide */ public static final native void enableFreezer(boolean enable); /** * Return the scheduling group of requested process. * Loading core/jni/android_util_Process.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,22 @@ void android_os_Process_setProcessFrozen( } } void android_os_Process_enableFreezer( JNIEnv *env, jobject clazz, jboolean enable) { bool success = true; if (enable) { success = SetTaskProfiles(0, {"FreezerFrozen"}, true); } else { success = SetTaskProfiles(0, {"FreezerThawed"}, true); } if (!success) { jniThrowException(env, "java/lang/RuntimeException", "Unknown error"); } } jint android_os_Process_getProcessGroup(JNIEnv* env, jobject clazz, jint pid) { SchedPolicy sp; Loading Loading @@ -1344,6 +1360,7 @@ static const JNINativeMethod methods[] = { {"sendSignal", "(II)V", (void*)android_os_Process_sendSignal}, {"sendSignalQuiet", "(II)V", (void*)android_os_Process_sendSignalQuiet}, {"setProcessFrozen", "(IIZ)V", (void*)android_os_Process_setProcessFrozen}, {"enableFreezer", "(Z)V", (void*)android_os_Process_enableFreezer}, {"getFreeMemory", "()J", (void*)android_os_Process_getFreeMemory}, {"getTotalMemory", "()J", (void*)android_os_Process_getTotalMemory}, {"readProcLines", "(Ljava/lang/String;[Ljava/lang/String;[J)V", Loading services/core/java/com/android/server/am/ActivityManagerService.java +24 −0 Original line number Diff line number Diff line Loading @@ -2179,9 +2179,17 @@ public class ActivityManagerService extends IActivityManager.Stub @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(false); } if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, "meminfo", pw)) return; PriorityDump.dump(mPriorityDumper, fd, pw, args); if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(true); } } } Loading @@ -2193,9 +2201,17 @@ public class ActivityManagerService extends IActivityManager.Stub @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(false); } if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, "gfxinfo", pw)) return; mActivityManagerService.dumpGraphicsHardwareUsage(fd, pw, args); if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(true); } } } Loading @@ -2207,9 +2223,17 @@ public class ActivityManagerService extends IActivityManager.Stub @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(false); } if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, "dbinfo", pw)) return; mActivityManagerService.dumpDbInfo(fd, pw, args); if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(true); } } } Loading Loading
core/java/android/os/Process.java +13 −0 Original line number Diff line number Diff line Loading @@ -930,6 +930,19 @@ public class Process { */ public static final native void setProcessFrozen(int pid, int uid, boolean frozen); /** * Enable or disable the freezer. When enable == false all frozen processes are unfrozen, * but aren't removed from the freezer. Processes can still be added or removed * by using setProcessFrozen, but they won't actually be frozen until the freezer is enabled * again. If enable == true the freezer is enabled again, and all processes * in the freezer (including the ones added while the freezer was disabled) are frozen. * * @param enable Specify whether to enable (true) or disable (false) the freezer. * * @hide */ public static final native void enableFreezer(boolean enable); /** * Return the scheduling group of requested process. * Loading
core/jni/android_util_Process.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -346,6 +346,22 @@ void android_os_Process_setProcessFrozen( } } void android_os_Process_enableFreezer( JNIEnv *env, jobject clazz, jboolean enable) { bool success = true; if (enable) { success = SetTaskProfiles(0, {"FreezerFrozen"}, true); } else { success = SetTaskProfiles(0, {"FreezerThawed"}, true); } if (!success) { jniThrowException(env, "java/lang/RuntimeException", "Unknown error"); } } jint android_os_Process_getProcessGroup(JNIEnv* env, jobject clazz, jint pid) { SchedPolicy sp; Loading Loading @@ -1344,6 +1360,7 @@ static const JNINativeMethod methods[] = { {"sendSignal", "(II)V", (void*)android_os_Process_sendSignal}, {"sendSignalQuiet", "(II)V", (void*)android_os_Process_sendSignalQuiet}, {"setProcessFrozen", "(IIZ)V", (void*)android_os_Process_setProcessFrozen}, {"enableFreezer", "(Z)V", (void*)android_os_Process_enableFreezer}, {"getFreeMemory", "()J", (void*)android_os_Process_getFreeMemory}, {"getTotalMemory", "()J", (void*)android_os_Process_getTotalMemory}, {"readProcLines", "(Ljava/lang/String;[Ljava/lang/String;[J)V", Loading
services/core/java/com/android/server/am/ActivityManagerService.java +24 −0 Original line number Diff line number Diff line Loading @@ -2179,9 +2179,17 @@ public class ActivityManagerService extends IActivityManager.Stub @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(false); } if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, "meminfo", pw)) return; PriorityDump.dump(mPriorityDumper, fd, pw, args); if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(true); } } } Loading @@ -2193,9 +2201,17 @@ public class ActivityManagerService extends IActivityManager.Stub @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(false); } if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, "gfxinfo", pw)) return; mActivityManagerService.dumpGraphicsHardwareUsage(fd, pw, args); if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(true); } } } Loading @@ -2207,9 +2223,17 @@ public class ActivityManagerService extends IActivityManager.Stub @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(false); } if (!DumpUtils.checkDumpAndUsageStatsPermission(mActivityManagerService.mContext, "dbinfo", pw)) return; mActivityManagerService.dumpDbInfo(fd, pw, args); if (mActivityManagerService.mOomAdjuster.mCachedAppOptimizer.useFreezer()) { Process.enableFreezer(true); } } } Loading