diff options
-rw-r--r-- | procps/powertop.c | 25 |
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; } |