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

Commit 2ad889b6 authored by Michael Wachenschwanz's avatar Michael Wachenschwanz Committed by Android (Google) Code Review
Browse files

Merge "Clean up OomAdjusterModernImpl" into main

parents 260d9c9e 626554ef
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.am;

import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ProcessList.UNKNOWN_ADJ;

import android.annotation.Nullable;
import android.app.IServiceConnection;
@@ -37,7 +38,7 @@ import java.io.PrintWriter;
/**
 * Description of a single binding to a service.
 */
final class ConnectionRecord {
final class ConnectionRecord implements OomAdjusterModernImpl.Connection{
    final AppBindRecord binding;    // The application/service binding.
    final ActivityServiceConnectionsHolder<ConnectionRecord> activity;  // If non-null, the owning activity.
    final IServiceConnection conn;  // The client connection.
@@ -127,6 +128,14 @@ final class ConnectionRecord {
        aliasComponent = _aliasComponent;
    }

    @Override
    public void computeHostOomAdjLSP(OomAdjuster oomAdjuster, ProcessRecord host,
            ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll,
            int oomAdjReason, int cachedAdj) {
        oomAdjuster.computeServiceHostOomAdjLSP(this, host, client, now, topApp, doingAll, false,
                false, oomAdjReason, UNKNOWN_ADJ, false, false);
    }

    public long getFlags() {
        return flags;
    }
+11 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.server.am;

import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_PROVIDER;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ProcessList.UNKNOWN_ADJ;

import android.annotation.UserIdInt;
import android.os.Binder;
@@ -32,7 +33,8 @@ import com.android.internal.app.procstats.ProcessStats;
/**
 * Represents a link between a content provider and client.
 */
public final class ContentProviderConnection extends Binder {
public final class ContentProviderConnection extends Binder implements
        OomAdjusterModernImpl.Connection {
    public final ContentProviderRecord provider;
    public final ProcessRecord client;
    public final String clientPackage;
@@ -72,6 +74,14 @@ public final class ContentProviderConnection extends Binder {
        createTime = SystemClock.elapsedRealtime();
    }

    @Override
    public void computeHostOomAdjLSP(OomAdjuster oomAdjuster, ProcessRecord host,
            ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll,
            int oomAdjReason, int cachedAdj) {
        oomAdjuster.computeProviderHostOomAdjLSP(this, host, client, now, topApp, doingAll, false,
                false, oomAdjReason, UNKNOWN_ADJ, false, false);
    }

    public void startAssociationIfNeeded() {
        // If we don't already have an active association, create one...  but only if this
        // is an association between two different processes.
+11 −10
Original line number Diff line number Diff line
@@ -587,7 +587,7 @@ public class OomAdjuster {
    }

    @GuardedBy({"mService", "mProcLock"})
    private void performUpdateOomAdjLSP(@OomAdjReason int oomAdjReason) {
    protected void performUpdateOomAdjLSP(@OomAdjReason int oomAdjReason) {
        final ProcessRecord topApp = mService.getTopApp();
        // Clear any pending ones because we are doing a full update now.
        mPendingProcessSet.clear();
@@ -913,7 +913,7 @@ public class OomAdjuster {
    }

    @GuardedBy("mService")
    private void performUpdateOomAdjPendingTargetsLocked(@OomAdjReason int oomAdjReason) {
    protected void performUpdateOomAdjPendingTargetsLocked(@OomAdjReason int oomAdjReason) {
        final ProcessRecord topApp = mService.getTopApp();

        Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, oomAdjReasonToString(oomAdjReason));
@@ -941,7 +941,7 @@ public class OomAdjuster {
     * must have called {@link collectReachableProcessesLocked} on it.
     */
    @GuardedBy({"mService", "mProcLock"})
    protected void updateOomAdjInnerLSP(@OomAdjReason int oomAdjReason, final ProcessRecord topApp,
    private void updateOomAdjInnerLSP(@OomAdjReason int oomAdjReason, final ProcessRecord topApp,
            ArrayList<ProcessRecord> processes, ActiveUids uids, boolean potentialCycles,
            boolean startProfiling) {
        final boolean fullUpdate = processes == null;
@@ -1775,12 +1775,11 @@ public class OomAdjuster {
            state.setAdjSeq(mAdjSeq);
            state.setCurrentSchedulingGroup(SCHED_GROUP_BACKGROUND);
            state.setCurProcState(PROCESS_STATE_CACHED_EMPTY);
            state.setCurRawProcState(PROCESS_STATE_CACHED_EMPTY);
            state.setCurAdj(CACHED_APP_MAX_ADJ);
            state.setCurRawAdj(CACHED_APP_MAX_ADJ);
            state.setCompletedAdjSeq(state.getAdjSeq());
            state.setCurCapability(PROCESS_CAPABILITY_NONE);
            onProcessStateChanged(app, prevProcState);
            onProcessOomAdjChanged(app, prevAppAdj);
            return false;
        }

@@ -1843,8 +1842,6 @@ public class OomAdjuster {
            state.setCurRawProcState(state.getCurProcState());
            state.setCurAdj(state.getMaxAdj());
            state.setCompletedAdjSeq(state.getAdjSeq());
            onProcessStateChanged(app, prevProcState);
            onProcessOomAdjChanged(app, prevAppAdj);
            // if curAdj is less than prevAppAdj, then this process was promoted
            return state.getCurAdj() < prevAppAdj || state.getCurProcState() < prevProcState;
        }
@@ -2561,7 +2558,7 @@ public class OomAdjuster {
    }

    @GuardedBy({"mService", "mProcLock"})
    protected boolean computeServiceHostOomAdjLSP(ConnectionRecord cr, ProcessRecord app,
    public boolean computeServiceHostOomAdjLSP(ConnectionRecord cr, ProcessRecord app,
            ProcessRecord client, long now, ProcessRecord topApp, boolean doingAll,
            boolean cycleReEval, boolean computeClients, int oomAdjReason, int cachedAdj,
            boolean couldRecurse, boolean dryRun) {
@@ -2991,7 +2988,11 @@ public class OomAdjuster {
        return updated;
    }

    protected boolean computeProviderHostOomAdjLSP(ContentProviderConnection conn,
    /**
     * Computes the impact on {@code app} the provider connections from {@code client} has.
     */
    @GuardedBy({"mService", "mProcLock"})
    public boolean computeProviderHostOomAdjLSP(ContentProviderConnection conn,
            ProcessRecord app, ProcessRecord client, long now, ProcessRecord topApp,
            boolean doingAll, boolean cycleReEval, boolean computeClients, int oomAdjReason,
            int cachedAdj, boolean couldRecurse, boolean dryRun) {
@@ -3572,7 +3573,7 @@ public class OomAdjuster {
        int initialCapability =  PROCESS_CAPABILITY_NONE;
        boolean initialCached = true;
        final ProcessStateRecord state = app.mState;
        final int prevProcState = state.getCurRawProcState();
        final int prevProcState = state.getCurProcState();
        final int prevAdj = state.getCurRawAdj();
        // If the process has been marked as foreground, it is starting as the top app (with
        // Zygote#START_AS_TOP_APP_ARG), so boost the thread priority of its default UI thread.
+335 −314

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -208,7 +208,7 @@ public final class ProcessList {

    // Number of levels we have available for different service connection group importance
    // levels.
    static final int CACHED_APP_IMPORTANCE_LEVELS = 5;
    public static final int CACHED_APP_IMPORTANCE_LEVELS = 5;

    // The B list of SERVICE_ADJ -- these are the old and decrepit
    // services that aren't as shiny and interesting as the ones in the A list.
Loading