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

Commit 7fddb382 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Defer UID data removal until after reading is finished" am: ce2d4087

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1554529

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I96787bdcf17949de0df847c92ffe49b790225e74
parents 7d8db669 ce2d4087
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -11879,16 +11879,17 @@ public class BatteryStatsImpl extends BatteryStats {
        final int numClusters = mPowerProfile.getNumCpuClusters();
        mWakeLockAllocationsUs = null;
        final long startTimeMs = mClocks.uptimeMillis();
        final List<Integer> uidsToRemove = new ArrayList<>();
        mCpuUidFreqTimeReader.readDelta((uid, cpuFreqTimeMs) -> {
            uid = mapUid(uid);
            if (Process.isIsolated(uid)) {
                mCpuUidFreqTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                Slog.d(TAG, "Got freq readings for an isolated uid with no mapping: " + uid);
                return;
            }
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
                Slog.d(TAG, "Got freq readings for an invalid user's uid " + uid);
                mCpuUidFreqTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                return;
            }
            final Uid u = getUidStatsLocked(uid);
@@ -11947,6 +11948,9 @@ public class BatteryStatsImpl extends BatteryStats {
                }
            }
        });
        for (int uid : uidsToRemove) {
            mCpuUidFreqTimeReader.removeUid(uid);
        }
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
@@ -11992,21 +11996,25 @@ public class BatteryStatsImpl extends BatteryStats {
    @VisibleForTesting
    public void readKernelUidCpuActiveTimesLocked(boolean onBattery) {
        final long startTimeMs = mClocks.uptimeMillis();
        final List<Integer> uidsToRemove = new ArrayList<>();
        mCpuUidActiveTimeReader.readDelta((uid, cpuActiveTimesMs) -> {
            uid = mapUid(uid);
            if (Process.isIsolated(uid)) {
                mCpuUidActiveTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                Slog.w(TAG, "Got active times for an isolated uid with no mapping: " + uid);
                return;
            }
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
                Slog.w(TAG, "Got active times for an invalid user's uid " + uid);
                mCpuUidActiveTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                return;
            }
            final Uid u = getUidStatsLocked(uid);
            u.mCpuActiveTimeMs.addCountLocked(cpuActiveTimesMs, onBattery);
        });
        for (int uid : uidsToRemove) {
            mCpuUidActiveTimeReader.removeUid(uid);
        }
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
@@ -12021,21 +12029,25 @@ public class BatteryStatsImpl extends BatteryStats {
    @VisibleForTesting
    public void readKernelUidCpuClusterTimesLocked(boolean onBattery) {
        final long startTimeMs = mClocks.uptimeMillis();
        final List<Integer> uidsToRemove = new ArrayList<>();
        mCpuUidClusterTimeReader.readDelta((uid, cpuClusterTimesMs) -> {
            uid = mapUid(uid);
            if (Process.isIsolated(uid)) {
                mCpuUidClusterTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                Slog.w(TAG, "Got cluster times for an isolated uid with no mapping: " + uid);
                return;
            }
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
                Slog.w(TAG, "Got cluster times for an invalid user's uid " + uid);
                mCpuUidClusterTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                return;
            }
            final Uid u = getUidStatsLocked(uid);
            u.mCpuClusterTimesMs.addCountLocked(cpuClusterTimesMs, onBattery);
        });
        for (int uid : uidsToRemove) {
            mCpuUidClusterTimeReader.removeUid(uid);
        }
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {