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

Commit d1efed69 authored by Michael Wachenschwanz's avatar Michael Wachenschwanz Committed by Automerger Merge Worker
Browse files

Merge "Move RPM stats collection out of BatteryStatsImpl.mLock" into sc-dev am: 42f68a76

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

Change-Id: Iea7671b0b0e1d7d929556eb1f2435bdd28b730ee
parents 139a52e0 42f68a76
Loading
Loading
Loading
Loading
+21 −6
Original line number Original line Diff line number Diff line
@@ -275,7 +275,7 @@ public class BatteryStatsImpl extends BatteryStats {
    private int mNumAllUidCpuTimeReads;
    private int mNumAllUidCpuTimeReads;
    /** Container for Resource Power Manager stats. Updated by updateRpmStatsLocked. */
    /** Container for Resource Power Manager stats. Updated by updateRpmStatsLocked. */
    private final RpmStats mTmpRpmStats = new RpmStats();
    private RpmStats mTmpRpmStats = null;
    /** The soonest the RPM stats can be updated after it was last updated. */
    /** The soonest the RPM stats can be updated after it was last updated. */
    private static final long RPM_STATS_UPDATE_FREQ_MS = 1000;
    private static final long RPM_STATS_UPDATE_FREQ_MS = 1000;
    /** Last time that RPM stats were updated by updateRpmStatsLocked. */
    /** Last time that RPM stats were updated by updateRpmStatsLocked. */
@@ -12387,19 +12387,34 @@ public class BatteryStatsImpl extends BatteryStats {
        mLastBluetoothActivityInfo.set(info);
        mLastBluetoothActivityInfo.set(info);
    }
    }
    /**
    /**
     * Read and record Resource Power Manager (RPM) state and voter times.
     * Read Resource Power Manager (RPM) state and voter times.
     * If RPM stats were fetched more recently than RPM_STATS_UPDATE_FREQ_MS ago, uses the old data
     * If RPM stats were fetched more recently than RPM_STATS_UPDATE_FREQ_MS ago, uses the old data
     * instead of fetching it anew.
     * instead of fetching it anew.
     *
     * Note: This should be called without synchronizing this BatteryStatsImpl object
     */
     */
    public void updateRpmStatsLocked(long elapsedRealtimeUs) {
    public void fillLowPowerStats() {
        if (mPlatformIdleStateCallback == null) return;
        if (mPlatformIdleStateCallback == null) return;
        RpmStats rpmStats = new RpmStats();
        long now = SystemClock.elapsedRealtime();
        long now = SystemClock.elapsedRealtime();
        if (now - mLastRpmStatsUpdateTimeMs >= RPM_STATS_UPDATE_FREQ_MS) {
        if (now - mLastRpmStatsUpdateTimeMs >= RPM_STATS_UPDATE_FREQ_MS) {
            mPlatformIdleStateCallback.fillLowPowerStats(mTmpRpmStats);
            mPlatformIdleStateCallback.fillLowPowerStats(rpmStats);
            synchronized (this) {
                mTmpRpmStats = rpmStats;
                mLastRpmStatsUpdateTimeMs = now;
                mLastRpmStatsUpdateTimeMs = now;
            }
            }
        }
    }
    /**
     * Record Resource Power Manager (RPM) state and voter times.
     * TODO(b/185252376): Remove this logging. PowerStatsService logs the same data more
     * efficiently.
     */
    public void updateRpmStatsLocked(long elapsedRealtimeUs) {
        if (mTmpRpmStats == null) return;
        for (Map.Entry<String, RpmStats.PowerStatePlatformSleepState> pstate
        for (Map.Entry<String, RpmStats.PowerStatePlatformSleepState> pstate
                : mTmpRpmStats.mPlatformLowPowerStats.entrySet()) {
                : mTmpRpmStats.mPlatformLowPowerStats.entrySet()) {
+3 −0
Original line number Original line Diff line number Diff line
@@ -579,6 +579,9 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
            }
            }
        }
        }


        // Collect the latest low power stats without holding the mStats lock.
        mStats.fillLowPowerStats();

        final WifiActivityEnergyInfo wifiInfo = awaitControllerInfo(wifiReceiver);
        final WifiActivityEnergyInfo wifiInfo = awaitControllerInfo(wifiReceiver);
        final BluetoothActivityEnergyInfo bluetoothInfo = awaitControllerInfo(bluetoothReceiver);
        final BluetoothActivityEnergyInfo bluetoothInfo = awaitControllerInfo(bluetoothReceiver);
        ModemActivityInfo modemInfo = null;
        ModemActivityInfo modemInfo = null;