From 2eb239f92dbde5cd0fb6b8f665009878cbc63356 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Mon, 21 Sep 2009 15:30:21 +0400 Subject: Fix NPE crash-loop when cpufreq not available in the kernel. --- services/java/com/android/server/ProcessStats.java | 35 ++++++++++++---------- 1 file changed, 19 insertions(+), 16 deletions(-) (limited to 'services/java/com/android/server/ProcessStats.java') diff --git a/services/java/com/android/server/ProcessStats.java b/services/java/com/android/server/ProcessStats.java index eaab3eb..ac3b723 100644 --- a/services/java/com/android/server/ProcessStats.java +++ b/services/java/com/android/server/ProcessStats.java @@ -509,23 +509,26 @@ public class ProcessStats { } int speed = 0; String file = readFile("/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state", '\0'); - StringTokenizer st = new StringTokenizer(file, "\n "); - while (st.hasMoreElements()) { - String token = st.nextToken(); - try { - long val = Long.parseLong(token); - tempSpeeds[speed] = val; - token = st.nextToken(); - val = Long.parseLong(token); - tempTimes[speed] = val; - speed++; - if (speed == MAX_SPEEDS) break; // No more - if (localLOGV && out == null) { - Log.v(TAG, "First time : Speed/Time = " + tempSpeeds[speed - 1] - + "\t" + tempTimes[speed - 1]); + // Note: file may be null on kernels without cpufreq (i.e. the emulator's) + if (file != null) { + StringTokenizer st = new StringTokenizer(file, "\n "); + while (st.hasMoreElements()) { + String token = st.nextToken(); + try { + long val = Long.parseLong(token); + tempSpeeds[speed] = val; + token = st.nextToken(); + val = Long.parseLong(token); + tempTimes[speed] = val; + speed++; + if (speed == MAX_SPEEDS) break; // No more + if (localLOGV && out == null) { + Log.v(TAG, "First time : Speed/Time = " + tempSpeeds[speed - 1] + + "\t" + tempTimes[speed - 1]); + } + } catch (NumberFormatException nfe) { + Log.i(TAG, "Unable to parse time_in_state"); } - } catch (NumberFormatException nfe) { - Log.i(TAG, "Unable to parse time_in_state"); } } if (out == null) { -- cgit v1.1