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

Commit 82cd582c authored by Connor O'Brien's avatar Connor O'Brien Committed by Android (Google) Code Review
Browse files

Merge "Defer UID data removal until after reading is finished" into sc-dev

parents f131f0bf 94511977
Loading
Loading
Loading
Loading
+18 −6
Original line number Original line Diff line number Diff line
@@ -13002,16 +13002,17 @@ public class BatteryStatsImpl extends BatteryStats {
        mWakeLockAllocationsUs = null;
        mWakeLockAllocationsUs = null;
        final long startTimeMs = mClocks.uptimeMillis();
        final long startTimeMs = mClocks.uptimeMillis();
        final long elapsedRealtimeMs = mClocks.elapsedRealtime();
        final long elapsedRealtimeMs = mClocks.elapsedRealtime();
        final List<Integer> uidsToRemove = new ArrayList<>();
        mCpuUidFreqTimeReader.readDelta((uid, cpuFreqTimeMs) -> {
        mCpuUidFreqTimeReader.readDelta((uid, cpuFreqTimeMs) -> {
            uid = mapUid(uid);
            uid = mapUid(uid);
            if (Process.isIsolated(uid)) {
            if (Process.isIsolated(uid)) {
                mCpuUidFreqTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                if (DEBUG) Slog.d(TAG, "Got freq readings for an isolated uid: " + uid);
                if (DEBUG) Slog.d(TAG, "Got freq readings for an isolated uid: " + uid);
                return;
                return;
            }
            }
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
                if (DEBUG) Slog.d(TAG, "Got freq readings for an invalid user's uid " + uid);
                if (DEBUG) Slog.d(TAG, "Got freq readings for an invalid user's uid " + uid);
                mCpuUidFreqTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                return;
                return;
            }
            }
            final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
            final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
@@ -13070,6 +13071,9 @@ public class BatteryStatsImpl extends BatteryStats {
                }
                }
            }
            }
        });
        });
        for (int uid : uidsToRemove) {
            mCpuUidFreqTimeReader.removeUid(uid);
        }
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
@@ -13116,21 +13120,25 @@ public class BatteryStatsImpl extends BatteryStats {
    public void readKernelUidCpuActiveTimesLocked(boolean onBattery) {
    public void readKernelUidCpuActiveTimesLocked(boolean onBattery) {
        final long startTimeMs = mClocks.uptimeMillis();
        final long startTimeMs = mClocks.uptimeMillis();
        final long elapsedRealtimeMs = mClocks.elapsedRealtime();
        final long elapsedRealtimeMs = mClocks.elapsedRealtime();
        final List<Integer> uidsToRemove = new ArrayList<>();
        mCpuUidActiveTimeReader.readDelta((uid, cpuActiveTimesMs) -> {
        mCpuUidActiveTimeReader.readDelta((uid, cpuActiveTimesMs) -> {
            uid = mapUid(uid);
            uid = mapUid(uid);
            if (Process.isIsolated(uid)) {
            if (Process.isIsolated(uid)) {
                mCpuUidActiveTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                if (DEBUG) Slog.w(TAG, "Got active times for an isolated uid: " + uid);
                if (DEBUG) Slog.w(TAG, "Got active times for an isolated uid: " + uid);
                return;
                return;
            }
            }
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
                if (DEBUG) Slog.w(TAG, "Got active times for an invalid user's uid " + uid);
                if (DEBUG) Slog.w(TAG, "Got active times for an invalid user's uid " + uid);
                mCpuUidActiveTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                return;
                return;
            }
            }
            final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
            final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
            u.mCpuActiveTimeMs.addCountLocked(cpuActiveTimesMs, onBattery);
            u.mCpuActiveTimeMs.addCountLocked(cpuActiveTimesMs, onBattery);
        });
        });
        for (int uid : uidsToRemove) {
            mCpuUidActiveTimeReader.removeUid(uid);
        }
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
@@ -13146,21 +13154,25 @@ public class BatteryStatsImpl extends BatteryStats {
    public void readKernelUidCpuClusterTimesLocked(boolean onBattery) {
    public void readKernelUidCpuClusterTimesLocked(boolean onBattery) {
        final long startTimeMs = mClocks.uptimeMillis();
        final long startTimeMs = mClocks.uptimeMillis();
        final long elapsedRealtimeMs = mClocks.elapsedRealtime();
        final long elapsedRealtimeMs = mClocks.elapsedRealtime();
        final List<Integer> uidsToRemove = new ArrayList<>();
        mCpuUidClusterTimeReader.readDelta((uid, cpuClusterTimesMs) -> {
        mCpuUidClusterTimeReader.readDelta((uid, cpuClusterTimesMs) -> {
            uid = mapUid(uid);
            uid = mapUid(uid);
            if (Process.isIsolated(uid)) {
            if (Process.isIsolated(uid)) {
                mCpuUidClusterTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                if (DEBUG) Slog.w(TAG, "Got cluster times for an isolated uid: " + uid);
                if (DEBUG) Slog.w(TAG, "Got cluster times for an isolated uid: " + uid);
                return;
                return;
            }
            }
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
            if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) {
                if (DEBUG) Slog.w(TAG, "Got cluster times for an invalid user's uid " + uid);
                if (DEBUG) Slog.w(TAG, "Got cluster times for an invalid user's uid " + uid);
                mCpuUidClusterTimeReader.removeUid(uid);
                uidsToRemove.add(uid);
                return;
                return;
            }
            }
            final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
            final Uid u = getUidStatsLocked(uid, elapsedRealtimeMs, startTimeMs);
            u.mCpuClusterTimesMs.addCountLocked(cpuClusterTimesMs, onBattery);
            u.mCpuClusterTimesMs.addCountLocked(cpuClusterTimesMs, onBattery);
        });
        });
        for (int uid : uidsToRemove) {
            mCpuUidClusterTimeReader.removeUid(uid);
        }
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        final long elapsedTimeMs = mClocks.uptimeMillis() - startTimeMs;
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {
        if (DEBUG_ENERGY_CPU || elapsedTimeMs >= 100) {