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

Commit 17893935 authored by Marco Ballesio's avatar Marco Ballesio Committed by Android (Google) Code Review
Browse files

Merge "ActivityManager: create process group in behalf of app zygote" into sc-dev

parents 55799d74 54264435
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -969,6 +969,16 @@ public class Process {
    public static final native int getProcessGroup(int pid)
            throws IllegalArgumentException, SecurityException;

    /**
     *
     * Create a new process group in the cgroup uid/pid hierarchy
     *
     * @return <0 in case of error
     *
     * @hide
     */
    public static final native int createProcessGroup(int uid, int pid);

    /**
     * On some devices, the foreground process may have one or more CPU
     * cores exclusively reserved for it. This method can be used to
+5 −0
Original line number Diff line number Diff line
@@ -377,6 +377,10 @@ jint android_os_Process_getProcessGroup(JNIEnv* env, jobject clazz, jint pid)
    return (int) sp;
}

jint android_os_Process_createProcessGroup(JNIEnv* env, jobject clazz, jint uid, jint pid) {
    return createProcessGroup(uid, pid);
}

/** Sample CPUset list format:
 *  0-3,4,6-8
 */
@@ -1358,6 +1362,7 @@ static const JNINativeMethod methods[] = {
        {"setThreadGroupAndCpuset", "(II)V", (void*)android_os_Process_setThreadGroupAndCpuset},
        {"setProcessGroup", "(II)V", (void*)android_os_Process_setProcessGroup},
        {"getProcessGroup", "(I)I", (void*)android_os_Process_getProcessGroup},
        {"createProcessGroup", "(II)I", (void*)android_os_Process_createProcessGroup},
        {"getExclusiveCores", "()[I", (void*)android_os_Process_getExclusiveCores},
        {"setSwappiness", "(IZ)Z", (void*)android_os_Process_setSwappiness},
        {"setArgV0", "(Ljava/lang/String;)V", (void*)android_os_Process_setArgV0},
+5 −0
Original line number Diff line number Diff line
@@ -2407,6 +2407,11 @@ public final class ProcessList {
                        app.getDisabledCompatChanges(), pkgDataInfoMap, allowlistedAppDataInfoMap,
                        false, false,
                        new String[]{PROC_START_SEQ_IDENT + app.getStartSeq()});

                if (Process.createProcessGroup(uid, startResult.pid) < 0) {
                    Slog.e(ActivityManagerService.TAG, "Unable to create process group for "
                            + app.processName + " (" + startResult.pid + ")");
                }
            } else {
                startResult = Process.start(entryPoint,
                        app.processName, uid, uid, gids, runtimeFlags, mountExternal,