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

Commit 80993a6e authored by Chris Wailes's avatar Chris Wailes
Browse files

Adjust Java Language thread priority in new processes.

Previously init started the Zygote with -20 nice value and then
immediately switched it to 0 in ZygoteInit.main so that new applications
forked from the Zygote have the correct Java Language thread priority.
This patch delays this priority change so that it only affects the new
processes and not the priority of the Zygote.

Test: m & flash & check ps
Bug: 146614089
Change-Id: Id00d0cfd642f02640c40b6e7b2aa8933a320b60c
Merged-In: Id00d0cfd642f02640c40b6e7b2aa8933a320b60c
parent 0b2fbfcf
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -654,6 +654,9 @@ public final class Zygote {
            // End of the postFork event.
            Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);

            // Set the Java Language thread priority to the default value for new apps.
            Thread.currentThread().setPriority(Thread.NORM_PRIORITY);

            return ZygoteInit.zygoteInit(args.mTargetSdkVersion,
                    args.mDisabledCompatChanges,
                    args.mRemainingArgs,
+3 −0
Original line number Diff line number Diff line
@@ -487,6 +487,9 @@ class ZygoteConnection {

        Zygote.setAppProcessName(parsedArgs, TAG);

        // Set the Java Language thread priority to the default value for new apps.
        Thread.currentThread().setPriority(Thread.NORM_PRIORITY);

        // End of the postFork event.
        Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
        if (parsedArgs.mInvokeWith != null) {
+15 −3
Original line number Diff line number Diff line
@@ -518,6 +518,9 @@ public class ZygoteInit {
            }
        }

        // Set the Java Language thread priority to the default value for the system server.
        Thread.currentThread().setPriority(Thread.NORM_PRIORITY);

        if (parsedArgs.mInvokeWith != null) {
            String[] args = parsedArgs.mRemainingArgs;
            // If we have a non-null system server class path, we'll have to duplicate the
@@ -825,13 +828,22 @@ public class ZygoteInit {
        return result;
    }

    /**
     * This is the entry point for a Zygote process.  It creates the Zygote server, loads resources,
     * and handles other tasks related to preparing the process for forking into applications.
     *
     * This process is started with a nice value of -20 (highest priority).  All paths that flow
     * into new processes are required to either set the priority to the default value or terminate
     * before executing any non-system code.  The native side of this occurs in SpecializeCommon,
     * while the Java Language priority is changed in ZygoteInit.handleSystemServerProcess,
     * ZygoteConnection.handleChildProc, and Zygote.usapMain.
     *
     * @param argv  Command line arguments used to specify the Zygote's configuration.
     */
    @UnsupportedAppUsage
    public static void main(String argv[]) {
        ZygoteServer zygoteServer = null;

        // Set the initial thread priority to the "normal" value.
        Thread.currentThread().setPriority(Thread.NORM_PRIORITY);

        // Mark zygote start. This ensures that thread creation will throw
        // an error.
        ZygoteHooks.startZygoteNoThreadCreation();