diff options
3 files changed, 10 insertions, 5 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 84c2417..ae2cbad 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -8073,7 +8073,7 @@ public final class BatteryStatsImpl extends BatteryStats { timer.mUid.mSystemCpuTime.addCountLocked(systemTimeUs); final Uid.Proc proc = timer.mUid.getProcessStatsLocked("*wakelock*"); - proc.addCpuTimeLocked(userTimeUs, systemTimeUs); + proc.addCpuTimeLocked(userTimeUs / 1000, systemTimeUs / 1000); mTempTotalCpuUserTimeUs -= userTimeUs; mTempTotalCpuSystemTimeUs -= systemTimeUs; @@ -8097,8 +8097,8 @@ public final class BatteryStatsImpl extends BatteryStats { u.mSystemCpuTime.addCountLocked(mTempTotalCpuSystemTimeUs); final Uid.Proc proc = u.getProcessStatsLocked("*lost*"); - proc.addCpuTimeLocked((int) mTempTotalCpuUserTimeUs, - (int) mTempTotalCpuSystemTimeUs); + proc.addCpuTimeLocked((int) mTempTotalCpuUserTimeUs / 1000, + (int) mTempTotalCpuSystemTimeUs / 1000); } } diff --git a/core/java/com/android/internal/os/KernelUidCpuTimeReader.java b/core/java/com/android/internal/os/KernelUidCpuTimeReader.java index 1a1e0b2..0df78ed 100644 --- a/core/java/com/android/internal/os/KernelUidCpuTimeReader.java +++ b/core/java/com/android/internal/os/KernelUidCpuTimeReader.java @@ -151,6 +151,7 @@ public class KernelUidCpuTimeReader { if (index >= 0) { mLastUserTimeUs.removeAt(index); mLastSystemTimeUs.removeAt(index); + mLastPowerMaUs.removeAt(index); } try (FileWriter writer = new FileWriter(sRemoveUidProcFile)) { diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 070813b..13b75ab 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -101,8 +101,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub mUpdateFlags = 0; } updateExternalStats((String)msg.obj, updateFlags); - synchronized (this) { - synchronized (mStats) { + + // other parts of the system could be calling into us + // from mStats in order to report of changes. We must grab the mStats + // lock before grabbing our own or we'll end up in a deadlock. + synchronized (mStats) { + synchronized (this) { final int numUidsToRemove = mUidsToRemove.size(); for (int i = 0; i < numUidsToRemove; i++) { mStats.removeIsolatedUidLocked(mUidsToRemove.get(i)); |