powertop: simplified C-state display code
authorDenys Vlasenko <dvlasenk@redhat.com>
Tue, 26 Oct 2010 11:03:31 +0000 (13:03 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Tue, 26 Oct 2010 11:03:31 +0000 (13:03 +0200)
function                                             old     new   delta
.rodata                                           145530  145514     -16
powertop_main                                       1510    1403    -107

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
procps/powertop.c

index 3d98b9bdaaf47b9e37cb96878c765b67c641955c..8b03a4d1263123ce56073cad8dcdbbe55dc7843b 100644 (file)
@@ -82,7 +82,6 @@ struct globals {
        ullong last_usage[MAX_CSTATE_COUNT];
        ullong start_duration[MAX_CSTATE_COUNT];
        ullong last_duration[MAX_CSTATE_COUNT];
-       char cstate_names[MAX_CSTATE_COUNT][16];
 #if ENABLE_FEATURE_USE_TERMIOS
        struct termios init_settings;
 #endif
@@ -806,22 +805,19 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
 
                if (totalevents == 0 && G.maxcstate <= 1) {
                        /* This should not happen */
-                       sprintf(cstate_lines[5], "< Detailed C-state information is not "
-                               "available.>\n");
+                       strcpy(cstate_lines[0], "C-state information is not available\n");
                } else {
                        double percentage;
-                       double newticks;
+                       unsigned newticks;
 
                        newticks = G.total_cpus * DEFAULT_SLEEP * FREQ_ACPI_1000 - totalticks;
-
                        /* Handle rounding errors: do not display negative values */
-                       if (newticks < 0)
+                       if ((int)newticks < 0)
                                newticks = 0;
 
                        sprintf(cstate_lines[0], "Cn\t\t  Avg residency\n");
                        percentage = newticks * 100.0 / (G.total_cpus * DEFAULT_SLEEP * FREQ_ACPI_1000);
-                       sprintf(cstate_lines[1], "C0 (cpu running)        (%4.1f%%)\n",
-                               percentage);
+                       sprintf(cstate_lines[1], "C0 (cpu running)        (%4.1f%%)\n", percentage);
 
                        /* Compute values for individual C-states */
                        for (i = 0; i < MAX_CSTATE_COUNT; i++) {
@@ -831,11 +827,8 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
                                                / (cur_usage[i] - G.last_usage[i] + 0.1) / FREQ_ACPI;
                                        percentage = (cur_duration[i] - G.last_duration[i]) * 100
                                                / (G.total_cpus * DEFAULT_SLEEP * FREQ_ACPI_1000);
-
-                                       if (!G.cstate_names[i][0])
-                                               sprintf(G.cstate_names[i], "C%u", i + 1);
-                                       sprintf(cstate_lines[i + 2], "%s\t\t%5.1fms (%4.1f%%)\n",
-                                               G.cstate_names[i], slept, percentage);
+                                       sprintf(cstate_lines[i + 2], "C%u\t\t%5.1fms (%4.1f%%)\n",
+                                               i + 1, slept, percentage);
                                        //if (maxsleep < slept)
                                        //      maxsleep = slept;
                                }
@@ -844,7 +837,7 @@ int powertop_main(int UNUSED_PARAM argc, char UNUSED_PARAM **argv)
 
                for (i = 0; i < MAX_CSTATE_COUNT + 2; i++)
                        if (cstate_lines[i][0])
-                               printf("%s", cstate_lines[i]);
+                               fputs(cstate_lines[i], stdout);
 
                i = process_timer_stats();
 #if ENABLE_FEATURE_POWERTOP_PROCIRQ