diff options
| -rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 16 | ||||
| -rw-r--r-- | core/java/com/android/internal/os/KernelWakelockReader.java | 10 |
2 files changed, 26 insertions, 0 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index e7c58f45c18c..4f42ed994f32 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -7915,6 +7915,8 @@ public final class BatteryStatsImpl extends BatteryStats { return; } + // Record whether we've seen a non-zero time (for debugging b/22716723). + boolean seenNonZeroTime = false; for (Map.Entry<String, KernelWakelockStats.Entry> ent : wakelockStats.entrySet()) { String name = ent.getKey(); KernelWakelockStats.Entry kws = ent.getValue(); @@ -7928,17 +7930,31 @@ public final class BatteryStatsImpl extends BatteryStats { kwlt.updateCurrentReportedCount(kws.mCount); kwlt.updateCurrentReportedTotalTime(kws.mTotalTime); kwlt.setUpdateVersion(kws.mVersion); + + if (kws.mVersion != wakelockStats.kernelWakelockVersion) + seenNonZeroTime |= kws.mTotalTime > 0; } + int numWakelocksSetStale = 0; if (wakelockStats.size() != mKernelWakelockStats.size()) { // Set timers to stale if they didn't appear in /proc/wakelocks this time. for (Map.Entry<String, SamplingTimer> ent : mKernelWakelockStats.entrySet()) { SamplingTimer st = ent.getValue(); if (st.getUpdateVersion() != wakelockStats.kernelWakelockVersion) { st.setStale(); + numWakelocksSetStale++; } } } + + if (!seenNonZeroTime) { + Slog.wtf(TAG, "All kernel wakelocks had time of zero"); + } + + if (numWakelocksSetStale == mKernelWakelockStats.size()) { + Slog.wtf(TAG, "All kernel wakelocks were set stale. new version=" + + wakelockStats.kernelWakelockVersion); + } } // We use an anonymous class to access these variables, diff --git a/core/java/com/android/internal/os/KernelWakelockReader.java b/core/java/com/android/internal/os/KernelWakelockReader.java index 0369c3ff248d..6654ea5683e3 100644 --- a/core/java/com/android/internal/os/KernelWakelockReader.java +++ b/core/java/com/android/internal/os/KernelWakelockReader.java @@ -75,6 +75,8 @@ public class KernelWakelockReader { is = new FileInputStream(sWakeupSourceFile); wakeup_sources = true; } catch (java.io.FileNotFoundException e2) { + Slog.wtf(TAG, "neither " + sWakelockFile + " nor " + + sWakeupSourceFile + " exists"); return null; } } @@ -82,6 +84,7 @@ public class KernelWakelockReader { len = is.read(buffer); is.close(); } catch (java.io.IOException e) { + Slog.wtf(TAG, "failed to read kernel wakelocks", e); return null; } @@ -171,6 +174,13 @@ public class KernelWakelockReader { numUpdatedWlNames++; } } + } else if (!parsed) { + try { + Slog.wtf(TAG, "Failed to parse proc line: " + + new String(wlBuffer, startIndex, endIndex - startIndex)); + } catch (Exception e) { + Slog.wtf(TAG, "Failed to parse proc line!"); + } } startIndex = endIndex; } |