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

Commit b79d6441 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Android (Google) Code Review
Browse files

Merge "Track CACHED procstate in BatteryStats" into tm-dev

parents cfe0ef54 c3113498
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -165,6 +165,7 @@ public abstract class BatteryConsumer {
            PROCESS_STATE_FOREGROUND,
            PROCESS_STATE_BACKGROUND,
            PROCESS_STATE_FOREGROUND_SERVICE,
            PROCESS_STATE_CACHED,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface ProcessState {
@@ -175,8 +176,9 @@ public abstract class BatteryConsumer {
    public static final int PROCESS_STATE_FOREGROUND = 1;
    public static final int PROCESS_STATE_BACKGROUND = 2;
    public static final int PROCESS_STATE_FOREGROUND_SERVICE = 3;
    public static final int PROCESS_STATE_CACHED = 4;

    public static final int PROCESS_STATE_COUNT = 4;
    public static final int PROCESS_STATE_COUNT = 5;

    private static final String[] sProcessStateNames = new String[PROCESS_STATE_COUNT];

@@ -186,6 +188,7 @@ public abstract class BatteryConsumer {
        sProcessStateNames[PROCESS_STATE_FOREGROUND] = "fg";
        sProcessStateNames[PROCESS_STATE_BACKGROUND] = "bg";
        sProcessStateNames[PROCESS_STATE_FOREGROUND_SERVICE] = "fgs";
        sProcessStateNames[PROCESS_STATE_CACHED] = "cached";
    }

    private static final int[] SUPPORTED_POWER_COMPONENTS_PER_PROCESS_STATE = {
+2 −0
Original line number Diff line number Diff line
@@ -680,6 +680,8 @@ public abstract class BatteryStats implements Parcelable {
                return BatteryConsumer.PROCESS_STATE_BACKGROUND;
            case BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE:
                return BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE;
            case BatteryStats.Uid.PROCESS_STATE_CACHED:
                return BatteryConsumer.PROCESS_STATE_CACHED;
            default:
                return BatteryConsumer.PROCESS_STATE_UNSPECIFIED;
        }
+4 −0
Original line number Diff line number Diff line
@@ -292,6 +292,10 @@ class PowerComponents {
                procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice
                        .FOREGROUND_SERVICE;
                break;
            case BatteryConsumer.PROCESS_STATE_CACHED:
                procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice
                        .CACHED;
                break;
            default:
                throw new IllegalArgumentException("Unknown process state: " + processState);
        }
+2 −0
Original line number Diff line number Diff line
@@ -119,6 +119,8 @@ public final class UidBatteryConsumer extends BatteryConsumer {
                    skipEmptyComponents);
            appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE,
                    skipEmptyComponents);
            appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_CACHED,
                    skipEmptyComponents);
            pw.print(sb);
        }

+53 −46
Original line number Diff line number Diff line
@@ -1929,20 +1929,28 @@ public class BatteryStatsImpl extends BatteryStats {
        private final TimeBase mTimeBase;
        private final LongMultiStateCounter mCounter;
        private TimeMultiStateCounter(TimeBase timeBase, Parcel in, long timestampMs) {
            mTimeBase = timeBase;
            mCounter = LongMultiStateCounter.CREATOR.createFromParcel(in);
            mCounter.setEnabled(mTimeBase.isRunning(), timestampMs);
            timeBase.add(this);
        private TimeMultiStateCounter(TimeBase timeBase, int stateCount, long timestampMs) {
            this(timeBase, new LongMultiStateCounter(stateCount), timestampMs);
        }
        private TimeMultiStateCounter(TimeBase timeBase, int stateCount, long timestampMs) {
        private TimeMultiStateCounter(TimeBase timeBase, LongMultiStateCounter counter,
                long timestampMs) {
            mTimeBase = timeBase;
            mCounter = new LongMultiStateCounter(stateCount);
            mCounter = counter;
            mCounter.setEnabled(mTimeBase.isRunning(), timestampMs);
            timeBase.add(this);
        }
        @Nullable
        private static TimeMultiStateCounter readFromParcel(Parcel in, TimeBase timeBase,
                int stateCount, long timestampMs) {
            LongMultiStateCounter counter = LongMultiStateCounter.CREATOR.createFromParcel(in);
            if (counter.getStateCount() != stateCount) {
                return null;
            }
            return new TimeMultiStateCounter(timeBase, counter, timestampMs);
        }
        private void writeToParcel(Parcel out) {
            mCounter.writeToParcel(out, 0);
        }
@@ -3510,11 +3518,8 @@ public class BatteryStatsImpl extends BatteryStats {
        private TimeMultiStateCounter readTimeMultiStateCounter(Parcel in, TimeBase timeBase) {
            if (in.readBoolean()) {
                final TimeMultiStateCounter counter =
                        new TimeMultiStateCounter(timeBase, in, mClock.elapsedRealtime());
                if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) {
                    return counter;
                }
                return TimeMultiStateCounter.readFromParcel(in, timeBase,
                        BatteryConsumer.PROCESS_STATE_COUNT, mClock.elapsedRealtime());
            }
            return null;
        }
@@ -3537,9 +3542,10 @@ public class BatteryStatsImpl extends BatteryStats {
                // invalid.
                TimeMultiStateCounter[] counters = new TimeMultiStateCounter[numCounters];
                for (int i = 0; i < numCounters; i++) {
                    final TimeMultiStateCounter counter =
                            new TimeMultiStateCounter(timeBase, in, mClock.elapsedRealtime());
                    if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) {
                    final TimeMultiStateCounter counter = TimeMultiStateCounter.readFromParcel(in,
                            timeBase, BatteryConsumer.PROCESS_STATE_COUNT,
                            mClock.elapsedRealtime());
                    if (counter != null) {
                        counters[i] = counter;
                    } else {
                        valid = false;
@@ -10744,11 +10750,9 @@ public class BatteryStatsImpl extends BatteryStats {
                            = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
                }
                if (in.readBoolean()) {
                    final TimeMultiStateCounter counter =
                            new TimeMultiStateCounter(mBsi.mOnBatteryTimeBase, in, timestampMs);
                    if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) {
                        mMobileRadioActiveTime = counter;
                    }
                    mMobileRadioActiveTime = TimeMultiStateCounter.readFromParcel(in,
                            mBsi.mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT,
                            timestampMs);
                }
                mMobileRadioActiveCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
@@ -10794,11 +10798,9 @@ public class BatteryStatsImpl extends BatteryStats {
            int stateCount = in.readInt();
            if (stateCount != 0) {
                final TimeMultiStateCounter counter = new TimeMultiStateCounter(
                        mBsi.mOnBatteryTimeBase, in, timestampMs);
                if (stateCount == BatteryConsumer.PROCESS_STATE_COUNT) {
                    mCpuActiveTimeMs = counter;
                }
                mCpuActiveTimeMs = TimeMultiStateCounter.readFromParcel(in,
                        mBsi.mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT,
                        timestampMs);
            }
            mCpuClusterTimesMs = new LongSamplingCounterArray(mBsi.mOnBatteryTimeBase, in);
@@ -16887,14 +16889,18 @@ public class BatteryStatsImpl extends BatteryStats {
        mNextMaxDailyDeadlineMs = in.readLong();
        mBatteryTimeToFullSeconds = in.readLong();
        mMeasuredEnergyStatsConfig = MeasuredEnergyStats.Config.createFromParcel(in);
        final MeasuredEnergyStats.Config config = MeasuredEnergyStats.Config.createFromParcel(in);
        final MeasuredEnergyStats measuredEnergyStats =
                MeasuredEnergyStats.createAndReadSummaryFromParcel(mMeasuredEnergyStatsConfig, in);
        if (config != null && Arrays.equals(config.getStateNames(),
                getBatteryConsumerProcessStateNames())) {
            /**
             * WARNING: Supported buckets may have changed across boots. Bucket mismatch is handled
             *          later when {@link #initMeasuredEnergyStatsLocked} is called.
             */
        mGlobalMeasuredEnergyStats = MeasuredEnergyStats.createAndReadSummaryFromParcel(
                mMeasuredEnergyStatsConfig, in);
            mMeasuredEnergyStatsConfig = config;
            mGlobalMeasuredEnergyStats = measuredEnergyStats;
        }
        mStartCount++;
@@ -16986,7 +16992,6 @@ public class BatteryStatsImpl extends BatteryStats {
                getScreenOffRpmTimerLocked(rpmName).readSummaryFromParcelLocked(in);
            }
        }
        int NKW = in.readInt();
        if (NKW > 10000) {
            throw new ParcelFormatException("File corrupt: too many kernel wake locks " + NKW);
@@ -17114,11 +17119,9 @@ public class BatteryStatsImpl extends BatteryStats {
                    u.mNetworkPacketActivityCounters[i].readSummaryFromParcelLocked(in);
                }
                if (in.readBoolean()) {
                    TimeMultiStateCounter counter = new TimeMultiStateCounter(
                            mOnBatteryTimeBase, in, elapsedRealtimeMs);
                    if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) {
                        u.mMobileRadioActiveTime = counter;
                    }
                    u.mMobileRadioActiveTime = TimeMultiStateCounter.readFromParcel(in,
                            mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT,
                            elapsedRealtimeMs);
                }
                u.mMobileRadioActiveCount.readSummaryFromParcelLocked(in);
            }
@@ -17168,11 +17171,9 @@ public class BatteryStatsImpl extends BatteryStats {
            int stateCount = in.readInt();
            if (stateCount != 0) {
                final TimeMultiStateCounter counter = new TimeMultiStateCounter(
                        mOnBatteryTimeBase, in, mClock.elapsedRealtime());
                if (stateCount == BatteryConsumer.PROCESS_STATE_COUNT) {
                    u.mCpuActiveTimeMs = counter;
                }
                u.mCpuActiveTimeMs = TimeMultiStateCounter.readFromParcel(in,
                        mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT,
                        mClock.elapsedRealtime());
            }
            u.mCpuClusterTimesMs.readSummaryFromParcelLocked(in);
@@ -18007,9 +18008,15 @@ public class BatteryStatsImpl extends BatteryStats {
        mLastWriteTimeMs = in.readLong();
        mBatteryTimeToFullSeconds = in.readLong();
        mMeasuredEnergyStatsConfig = MeasuredEnergyStats.Config.createFromParcel(in);
        mGlobalMeasuredEnergyStats =
        final MeasuredEnergyStats.Config config = MeasuredEnergyStats.Config.createFromParcel(in);
        final MeasuredEnergyStats measuredEnergyStats =
                MeasuredEnergyStats.createFromParcel(mMeasuredEnergyStatsConfig, in);
        if (config != null && Arrays.equals(config.getStateNames(),
                getBatteryConsumerProcessStateNames())) {
            mMeasuredEnergyStatsConfig = config;
            mGlobalMeasuredEnergyStats = measuredEnergyStats;
        }
        mRpmStats.clear();
        int NRPMS = in.readInt();
Loading