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

Commit d2932243 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Refactor ProcessStats, ProcessTracker.

ProcessStats is now called ProcessCpuTracker.

ProcessTracker is now ProcessStatsService, and its inner State
class is broken out into a separate top-level ProcessStats class.
This ProcessStats is moved to the framework, so we will be able
to use it elsewhere.

Change-Id: I6a127bcb835b6b474b72647c0b99b82c2137e5c5
parent 03901667
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -296,7 +296,21 @@ public class Binder implements IBinder {
                disabled = sDumpDisabled;
            }
            if (disabled == null) {
                try {
                    dump(fd, pw, args);
                } catch (SecurityException e) {
                    pw.println();
                    pw.println("Security exception: " + e.getMessage());
                    throw e;
                } catch (Throwable e) {
                    // Unlike usual calls, in this case if an exception gets thrown
                    // back to us we want to print it back in to the dump data, since
                    // that is where the caller expects all interesting information to
                    // go.
                    pw.println();
                    pw.println("Exception occurred while dumping:");
                    e.printStackTrace(pw);
                }
            } else {
                pw.println(sDumpDisabled);
            }
@@ -443,7 +457,6 @@ final class BinderProxy implements IBinder {
        data.writeStringArray(args);
        try {
            transact(DUMP_TRANSACTION, data, reply, FLAG_ONEWAY);
            reply.readException();
        } finally {
            data.recycle();
            reply.recycle();
+39 −39
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;

public class ProcessStats {
public class ProcessCpuTracker {
    private static final String TAG = "ProcessStats";
    private static final boolean DEBUG = false;
    private static final boolean localLOGV = DEBUG || false;
@@ -256,7 +256,7 @@ public class ProcessStats {
    };


    public ProcessStats(boolean includeThreads) {
    public ProcessCpuTracker(boolean includeThreads) {
        mIncludeThreads = includeThreads;
    }

+9 −9
Original line number Diff line number Diff line
@@ -29,18 +29,18 @@ import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;

import com.android.internal.os.ProcessStats;
import com.android.internal.os.ProcessCpuTracker;

public class LoadAverageService extends Service {
    private View mView;

    private static final class Stats extends ProcessStats {
    private static final class CpuTracker extends ProcessCpuTracker {
        String mLoadText;
        int mLoadWidth;

        private final Paint mPaint;

        Stats(Paint paint) {
        CpuTracker(Paint paint) {
            super(false);
            mPaint = paint;
        }
@@ -70,7 +70,7 @@ public class LoadAverageService extends Service {
            }
        };

        private final Stats mStats;
        private final CpuTracker mStats;

        private Paint mLoadPaint;
        private Paint mAddedPaint;
@@ -150,7 +150,7 @@ public class LoadAverageService extends Service {
            float descent = mLoadPaint.descent();
            mFH = (int)(descent - mAscent + .5f);

            mStats = new Stats(mLoadPaint);
            mStats = new CpuTracker(mLoadPaint);
            mStats.init();
            updateDisplay();
        }
@@ -179,7 +179,7 @@ public class LoadAverageService extends Service {
            final int W = mNeededWidth;
            final int RIGHT = getWidth()-1;

            final Stats stats = mStats;
            final CpuTracker stats = mStats;
            final int userTime = stats.getLastUserTime();
            final int systemTime = stats.getLastSystemTime();
            final int iowaitTime = stats.getLastIoWaitTime();
@@ -226,7 +226,7 @@ public class LoadAverageService extends Service {

            int N = stats.countWorkingStats();
            for (int i=0; i<N; i++) {
                Stats.Stats st = stats.getWorkingStats(i);
                CpuTracker.Stats st = stats.getWorkingStats(i);
                y += mFH;
                top += mFH;
                bottom += mFH;
@@ -259,12 +259,12 @@ public class LoadAverageService extends Service {
        }

        void updateDisplay() {
            final Stats stats = mStats;
            final CpuTracker stats = mStats;
            final int NW = stats.countWorkingStats();

            int maxWidth = stats.mLoadWidth;
            for (int i=0; i<NW; i++) {
                Stats.Stats st = stats.getWorkingStats(i);
                CpuTracker.Stats st = stats.getWorkingStats(i);
                if (st.nameWidth > maxWidth) {
                    maxWidth = st.nameWidth;
                }
+16 −15
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

import com.android.internal.app.ProcessStats;
import com.android.internal.os.BatteryStatsImpl;
import com.android.internal.os.TransferPipe;
import com.android.server.am.ActivityManagerService.ItemMatcher;
@@ -251,9 +252,9 @@ public final class ActiveServices {
        }
        r.lastActivity = SystemClock.uptimeMillis();
        r.startRequested = true;
        ProcessTracker.ServiceState stracker = r.getTracker();
        ProcessStats.ServiceState stracker = r.getTracker();
        if (stracker != null) {
            stracker.setStarted(true, mAm.mProcessTracker.getMemFactorLocked(), r.lastActivity);
            stracker.setStarted(true, mAm.mProcessStats.getMemFactorLocked(), r.lastActivity);
        }
        r.callStart = false;
        r.pendingStarts.add(new ServiceRecord.StartItem(r, false, r.makeNextStartId(),
@@ -274,7 +275,7 @@ public final class ActiveServices {
        }
        service.startRequested = false;
        if (service.tracker != null) {
            service.tracker.setStarted(false, mAm.mProcessTracker.getMemFactorLocked(),
            service.tracker.setStarted(false, mAm.mProcessStats.getMemFactorLocked(),
                    SystemClock.uptimeMillis());
        }
        service.callStart = false;
@@ -374,7 +375,7 @@ public final class ActiveServices {
            }
            r.startRequested = false;
            if (r.tracker != null) {
                r.tracker.setStarted(false, mAm.mProcessTracker.getMemFactorLocked(),
                r.tracker.setStarted(false, mAm.mProcessStats.getMemFactorLocked(),
                        SystemClock.uptimeMillis());
            }
            r.callStart = false;
@@ -516,9 +517,9 @@ public final class ActiveServices {
                s.lastActivity = SystemClock.uptimeMillis();
                if (!s.hasAutoCreateConnections()) {
                    // This is the first binding, let the tracker know.
                    ProcessTracker.ServiceState stracker = s.getTracker();
                    ProcessStats.ServiceState stracker = s.getTracker();
                    if (stracker != null) {
                        stracker.setBound(true, mAm.mProcessTracker.getMemFactorLocked(),
                        stracker.setBound(true, mAm.mProcessStats.getMemFactorLocked(),
                                s.lastActivity);
                    }
                }
@@ -844,9 +845,9 @@ public final class ActiveServices {
        long now = SystemClock.uptimeMillis();
        if (r.executeNesting == 0) {
            r.executeFg = fg;
            ProcessTracker.ServiceState stracker = r.getTracker();
            ProcessStats.ServiceState stracker = r.getTracker();
            if (stracker != null) {
                stracker.setExecuting(true, mAm.mProcessTracker.getMemFactorLocked(), now);
                stracker.setExecuting(true, mAm.mProcessStats.getMemFactorLocked(), now);
            }
            if (r.app != null) {
                if (r.app.executingServices.size() == 0) {
@@ -1079,7 +1080,7 @@ public final class ActiveServices {
                Slog.v(TAG_MU, "bringUpServiceLocked: appInfo.uid=" + r.appInfo.uid + " app=" + app);
            if (app != null && app.thread != null) {
                try {
                    app.addPackage(r.appInfo.packageName, mAm.mProcessTracker);
                    app.addPackage(r.appInfo.packageName, mAm.mProcessStats);
                    realStartServiceLocked(r, app, execInFg);
                    return null;
                } catch (RemoteException e) {
@@ -1364,7 +1365,7 @@ public final class ActiveServices {
           ((ServiceRestarter)r.restarter).setService(null);
        }

        int memFactor = mAm.mProcessTracker.getMemFactorLocked();
        int memFactor = mAm.mProcessStats.getMemFactorLocked();
        long now = SystemClock.uptimeMillis();
        if (r.tracker != null) {
            r.tracker.setStarted(false, memFactor, now);
@@ -1435,7 +1436,7 @@ public final class ActiveServices {
                boolean hasAutoCreate = s.hasAutoCreateConnections();
                if (!hasAutoCreate) {
                    if (s.tracker != null) {
                        s.tracker.setBound(false, mAm.mProcessTracker.getMemFactorLocked(),
                        s.tracker.setBound(false, mAm.mProcessStats.getMemFactorLocked(),
                                SystemClock.uptimeMillis());
                    }
                }
@@ -1541,7 +1542,7 @@ public final class ActiveServices {
            }
            r.executeFg = false;
            if (r.tracker != null) {
                r.tracker.setExecuting(false, mAm.mProcessTracker.getMemFactorLocked(),
                r.tracker.setExecuting(false, mAm.mProcessStats.getMemFactorLocked(),
                        SystemClock.uptimeMillis());
                if (inStopping) {
                    r.tracker.makeInactive();
@@ -1566,7 +1567,7 @@ public final class ActiveServices {

                    mPendingServices.remove(i);
                    i--;
                    proc.addPackage(sr.appInfo.packageName, mAm.mProcessTracker);
                    proc.addPackage(sr.appInfo.packageName, mAm.mProcessStats);
                    realStartServiceLocked(sr, proc, sr.createdFromFg);
                    didSomething = true;
                }
@@ -1737,7 +1738,7 @@ public final class ActiveServices {
            sr.isolatedProc = null;
            sr.executeNesting = 0;
            if (sr.tracker != null) {
                sr.tracker.setExecuting(false, mAm.mProcessTracker.getMemFactorLocked(),
                sr.tracker.setExecuting(false, mAm.mProcessStats.getMemFactorLocked(),
                        SystemClock.uptimeMillis());
            }
            if (mStoppingServices.remove(sr)) {
@@ -1772,7 +1773,7 @@ public final class ActiveServices {
                    if (sr.pendingStarts.size() == 0) {
                        sr.startRequested = false;
                        if (sr.tracker != null) {
                            sr.tracker.setStarted(false, mAm.mProcessTracker.getMemFactorLocked(),
                            sr.tracker.setStarted(false, mAm.mProcessStats.getMemFactorLocked(),
                                    SystemClock.uptimeMillis());
                        }
                        if (!sr.hasAutoCreateConnections()) {
Loading