Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3fb7e28 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "platform/frameworks/base: Move different processes to their respective cgroups"

parents d5f46b10 c53b82e6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -923,14 +923,14 @@ public class Process {
     * Adjust the swappiness level for a process.
     *
     * @param pid The process identifier to set.
     * @param is_increased Whether swappiness should be increased or default.
     * @param adj The process type for which swappiness to be set.
     *
     * @return Returns true if the underlying system supports this
     *         feature, else false.
     *
     * {@hide}
     */
    public static final native boolean setSwappiness(int pid, boolean is_increased);
    public static final native boolean setSwappiness(int pid, int adj);

    /**
     * Change this process's argv[0] parameter.  This can be useful to show
+20 −7
Original line number Diff line number Diff line
@@ -53,6 +53,13 @@ static pthread_key_t gBgKey = -1;

// For both of these, err should be in the errno range (positive), not a status_t (negative)

enum cgroup_task_id {
    CGROUP_TASK_PERSISTENT=-12,
    CGROUP_TASK_DEFAULT=-1,
    CGROUP_TASK_FOREGROUND=0,
    CGROUP_TASK_BACKGROUND=9
};

static void signalExceptionForPriorityError(JNIEnv* env, int err)
{
    switch (err) {
@@ -362,13 +369,19 @@ jboolean android_os_Process_setOomAdj(JNIEnv* env, jobject clazz,
}

jboolean android_os_Process_setSwappiness(JNIEnv *env, jobject clazz,
                                          jint pid, jboolean is_increased)
                                          jint pid, jint adj)
{
    char text[64];

    if (is_increased) {
        strcpy(text, "/sys/fs/cgroup/memory/sw/tasks");
    } else {
    ALOGD("android_os_Process_setSwappiness start, pid = %d, adj = %d",pid,adj) ;

    if (adj == CGROUP_TASK_FOREGROUND) {
         strcpy(text, "/sys/fs/cgroup/memory/foreground/tasks");
    } else if (adj == CGROUP_TASK_BACKGROUND){
         strcpy(text, "/sys/fs/cgroup/memory/background/tasks");
    } else if (adj == CGROUP_TASK_PERSISTENT){
         strcpy(text, "/sys/fs/cgroup/memory/persistent/tasks");
    } else if (adj == CGROUP_TASK_DEFAULT){
	 strcpy(text, "/sys/fs/cgroup/memory/tasks");
    }

@@ -383,7 +396,7 @@ jboolean android_os_Process_setSwappiness(JNIEnv *env, jobject clazz,
        write(fd, text, strlen(text));
        close(fd);
    }

    ALOGD("android_os_Process_setSwappiness end, pid = %d, adj = %d",pid,adj);
    return true;
}

@@ -1024,7 +1037,7 @@ static const JNINativeMethod methods[] = {
    {"setProcessGroup",     "(II)V", (void*)android_os_Process_setProcessGroup},
    {"getProcessGroup",     "(I)I", (void*)android_os_Process_getProcessGroup},
    {"setOomAdj",   "(II)Z", (void*)android_os_Process_setOomAdj},
    {"setSwappiness",   "(IZ)Z", (void*)android_os_Process_setSwappiness},
    {"setSwappiness",   "(II)Z", (void*)android_os_Process_setSwappiness},
    {"setArgV0",    "(Ljava/lang/String;)V", (void*)android_os_Process_setArgV0},
    {"setUid", "(I)I", (void*)android_os_Process_setUid},
    {"setGid", "(I)I", (void*)android_os_Process_setGid},
+15 −3
Original line number Diff line number Diff line
@@ -15377,6 +15377,20 @@ public final class ActivityManagerService extends ActivityManagerNative
        if (app.curAdj != app.setAdj) {
            if (Process.setOomAdj(app.pid, app.curAdj)) {
		if (app.curAdj >= ProcessList.CACHED_APP_MIN_ADJ) {
			Process.setSwappiness(app.pid,ProcessList.CACHED_APP_MIN_ADJ);
		} else
		if (app.curAdj == ProcessList.FOREGROUND_APP_ADJ) {
			Process.setSwappiness(app.pid,ProcessList.FOREGROUND_APP_ADJ);
		} else
		if (app.curAdj == ProcessList.PERSISTENT_PROC_ADJ) {
			Process.setSwappiness(app.pid,ProcessList.PERSISTENT_PROC_ADJ);
		} else
		if (app.curAdj == ProcessList.HOME_APP_ADJ) {
	                Process.setSwappiness(app.pid,ProcessList.FOREGROUND_APP_ADJ);
		} else {
			Process.setSwappiness(app.pid,-1);
		}
	        if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(
                    TAG, "Set " + app.pid + " " + app.processName +
                    " adj " + app.curAdj + ": " + app.adjType);
@@ -15415,8 +15429,6 @@ public final class ActivityManagerService extends ActivityManagerNative
                        }
                    }
                }
                Process.setSwappiness(app.pid,
                        app.curSchedGroup <= Process.THREAD_GROUP_BG_NONINTERACTIVE);
            }
        }
        if (app.repProcState != app.curProcState) {