aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--procps/powertop.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/procps/powertop.c b/procps/powertop.c
index da7f05258..2f977a03b 100644
--- a/procps/powertop.c
+++ b/procps/powertop.c
@@ -399,6 +399,7 @@ static NOINLINE int process_timer_stats(void)
buf[0] = '\0';
totalticks = 0;
+ n = 0;
fp = NULL;
if (!G.cant_enable_timer_stats)
fp = fopen_for_read("/proc/timer_stats");
@@ -418,14 +419,24 @@ static NOINLINE int process_timer_stats(void)
const char *count, *process, *func;
char *p;
int idx;
+ unsigned cnt;
count = skip_whitespace(buf);
p = strchr(count, ',');
if (!p)
continue;
*p++ = '\0';
- if (strcmp(skip_non_whitespace(count), " total events") == 0)
+ cnt = bb_strtou(count, NULL, 10);
+ if (strcmp(skip_non_whitespace(count), " total events") == 0) {
+#if ENABLE_FEATURE_POWERTOP_PROCIRQ
+ n = cnt / G.total_cpus;
+ if (n > 0 && n < G.interrupt_0) {
+ sprintf(line, " <interrupt> : %s", "extra timer interrupt");
+ save_line(line, G.interrupt_0 - n);
+ }
+#endif
break;
+ }
if (strchr(count, 'D'))
continue; /* deferred */
p = skip_whitespace(p); /* points to pid now */
@@ -471,21 +482,11 @@ static NOINLINE int process_timer_stats(void)
sprintf(line, "%15.15s : %s", process, func);
//else
// sprintf(line, "%s", process);
- save_line(line, bb_strtoull(count, NULL, 10));
+ save_line(line, cnt);
}
fclose(fp);
}
- n = 0;
-#if ENABLE_FEATURE_POWERTOP_PROCIRQ
- if (strstr(buf, " total events")) {
- n = bb_strtoull(buf, NULL, 10) / G.total_cpus;
- if (n > 0 && n < G.interrupt_0) {
- sprintf(line, " <interrupt> : %s", "extra timer interrupt");
- save_line(line, G.interrupt_0 - n);
- }
- }
-#endif
return n;
}