From 6d8dcec87200e75ca62715c8feb87794d113e957 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Thu, 1 Jun 2017 12:09:03 -0700 Subject: [PATCH] Update KernelUidCpuFreqTimeReader to handle uid removals. Bug: 34133340 Test: manual Change-Id: Iaad2061671d83e1ff6d2797e166ae903f6faec13 --- core/java/com/android/internal/os/BatteryStatsImpl.java | 5 +++++ .../com/android/internal/os/KernelUidCpuFreqTimeReader.java | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 46942bf429c53..235ebc88d5e57 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -3518,6 +3518,7 @@ public class BatteryStatsImpl extends BatteryStats { public void removeIsolatedUidLocked(int isolatedUid) { mIsolatedUids.delete(isolatedUid); mKernelUidCpuTimeReader.removeUid(isolatedUid); + mKernelUidCpuFreqTimeReader.removeUid(isolatedUid); } public int mapUid(int uid) { @@ -10351,6 +10352,9 @@ public class BatteryStatsImpl extends BatteryStats { public void onUidCpuFreqTime(int uid, long[] cpuFreqTimeMs) { uid = mapUid(uid); if (Process.isIsolated(uid)) { + mKernelUidCpuFreqTimeReader.removeUid(uid); + Slog.d(TAG, "Got freq readings for an isolated uid with" + + " no mapping to owning uid: " + uid); return; } final Uid u = getUidStatsLocked(uid); @@ -11019,6 +11023,7 @@ public class BatteryStatsImpl extends BatteryStats { */ public void removeUidStatsLocked(int uid) { mKernelUidCpuTimeReader.removeUid(uid); + mKernelUidCpuFreqTimeReader.removeUid(uid); mUidStats.remove(uid); } diff --git a/core/java/com/android/internal/os/KernelUidCpuFreqTimeReader.java b/core/java/com/android/internal/os/KernelUidCpuFreqTimeReader.java index 9fbc4a8871b3c..ff521c242fad3 100644 --- a/core/java/com/android/internal/os/KernelUidCpuFreqTimeReader.java +++ b/core/java/com/android/internal/os/KernelUidCpuFreqTimeReader.java @@ -72,6 +72,10 @@ public class KernelUidCpuFreqTimeReader { } } + public void removeUid(int uid) { + mLastUidCpuFreqTimeMs.delete(uid); + } + @VisibleForTesting public void readDelta(BufferedReader reader, @Nullable Callback callback) throws IOException { String line = reader.readLine();