summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-06-06 11:48:46 -0700
committerDianne Hackborn <hackbod@google.com>2012-06-06 11:48:46 -0700
commitcdadee630e09fc2aa966244a71bf22236f9a30a4 (patch)
treefa4927ce3142fb4470ee8571cf20a34306c4226c
parent1ad66b2f873496bcbe72e91d1978cf1b2633b3a4 (diff)
downloadframeworks_base-cdadee630e09fc2aa966244a71bf22236f9a30a4.zip
frameworks_base-cdadee630e09fc2aa966244a71bf22236f9a30a4.tar.gz
frameworks_base-cdadee630e09fc2aa966244a71bf22236f9a30a4.tar.bz2
Fix some divide by zero errors that could crash the system.
Change-Id: I66273df84e45de59b5b161f4d13de67a9e0f46d5
-rw-r--r--core/java/com/android/internal/os/ProcessStats.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/core/java/com/android/internal/os/ProcessStats.java b/core/java/com/android/internal/os/ProcessStats.java
index e0e9a29..1923b86 100644
--- a/core/java/com/android/internal/os/ProcessStats.java
+++ b/core/java/com/android/internal/os/ProcessStats.java
@@ -619,8 +619,11 @@ public class ProcessStats {
}
final public float getTotalCpuPercent() {
- return ((float)(mRelUserTime+mRelSystemTime+mRelIrqTime)*100)
- / (mRelUserTime+mRelSystemTime+mRelIrqTime+mRelIdleTime);
+ int denom = mRelUserTime+mRelSystemTime+mRelIrqTime+mRelIdleTime;
+ if (denom <= 0) {
+ return 0;
+ }
+ return ((float)(mRelUserTime+mRelSystemTime+mRelIrqTime)*100) / denom;
}
final void buildWorkingProcs() {
@@ -699,7 +702,7 @@ public class ProcessStats {
long sampleTime = mCurrentSampleTime - mLastSampleTime;
long sampleRealTime = mCurrentSampleRealTime - mLastSampleRealTime;
- long percAwake = (sampleTime*100) / sampleRealTime;
+ long percAwake = sampleRealTime > 0 ? ((sampleTime*100) / sampleRealTime) : 0;
if (percAwake != 100) {
pw.print(" with ");
pw.print(percAwake);