summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java6
-rw-r--r--core/java/com/android/internal/os/KernelUidCpuTimeReader.java1
-rw-r--r--services/core/java/com/android/server/am/BatteryStatsService.java8
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));