Author: hrs
Date: Wed Sep 10 22:34:08 2014
New Revision: 271410
URL: http://svnweb.freebsd.org/changeset/base/271410

Log:
  Fix header output when -P is specified and (ncpus - 1) != maxid.
  
  Reported by:  Hiroaki Shimizu
  PR:           152738

Modified:
  head/usr.bin/vmstat/vmstat.c

Modified: head/usr.bin/vmstat/vmstat.c
==============================================================================
--- head/usr.bin/vmstat/vmstat.c        Wed Sep 10 21:37:47 2014        
(r271409)
+++ head/usr.bin/vmstat/vmstat.c        Wed Sep 10 22:34:08 2014        
(r271410)
@@ -657,6 +657,8 @@ dovmstat(unsigned int interval, int reps
        uptime = getuptime();
        halfuptime = uptime / 2;
        rate_adj = 1;
+       ncpus = 1;
+       maxid = 0;
 
        /*
         * If the user stops the program (control-Z) and then resumes it,
@@ -702,7 +704,7 @@ dovmstat(unsigned int interval, int reps
        }
        for (hdrcnt = 1;;) {
                if (!--hdrcnt)
-                       printhdr(ncpus, cpumask);
+                       printhdr(maxid, cpumask);
                if (kd != NULL) {
                        if (kvm_getcptime(kd, cur.cp_time) < 0)
                                errx(1, "kvm_getcptime: %s", kvm_geterr(kd));
@@ -753,7 +755,7 @@ dovmstat(unsigned int interval, int reps
                                errx(1, "%s", devstat_errbuf);
                                break;
                        case 1:
-                               printhdr(ncpus, cpumask);
+                               printhdr(maxid, cpumask);
                                break;
                        default:
                                break;
@@ -822,7 +824,7 @@ dovmstat(unsigned int interval, int reps
 }
 
 static void
-printhdr(int ncpus, u_long cpumask)
+printhdr(int maxid, u_long cpumask)
 {
        int i, num_shown;
 
@@ -834,7 +836,7 @@ printhdr(int ncpus, u_long cpumask)
                (void)printf("disk");
        (void)printf("   faults         ");
        if (Pflag) {
-               for (i = 0; i < ncpus; i++) {
+               for (i = 0; i <= maxid; i++) {
                        if (cpumask & (1ul << i))
                                printf("cpu%-2d    ", i);
                }
@@ -850,8 +852,10 @@ printhdr(int ncpus, u_long cpumask)
                                     dev_select[i].unit_number);
        (void)printf("  in   sy   cs");
        if (Pflag) {
-               for (i = 0; i < ncpus; i++)
-                       printf(" us sy id");
+               for (i = 0; i <= maxid; i++) {
+                       if (cpumask & (1ul << i))
+                               printf(" us sy id");
+               }
                printf("\n");
        } else
                printf(" us sy id\n");
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to