Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Jun 2004 22:10:55 +0900
From:      YONETANI Tomokazu <qhwt+freebsd-acpi@les.ath.cx>
To:        nate@root.org
Cc:        freebsd-acpi@freebsd.org
Subject:   cx_usage
Message-ID:  <20040616131055.GA37637@les.ath.cx>

next in thread | raw e-mail | index | archive | help
Hello.
What do you think about the following changes?

- print 100% instead of 99% when there's only 1 Cx state, and 0%
  when the sum is zero.
- two digits from fractional part of each percentage are shown;
  my Laptop PC barely enters into C3 state and hw.acpi.cpu.cx_usage
  is almost always "0% 99% 0%" after revision 1.39. it's now shown as
  "0.00% 99.96% 0.03%"

--- /home/build/freebsd/current/sys/dev/acpica/acpi_cpu.c	2004-06-16 15:27:25.000000000 +0900
+++ acpi_cpu.c	2004-06-16 15:24:38.000000000 +0900
@@ -1046,15 +1051,21 @@
     struct sbuf	 sb;
     char	 buf[128];
     int		 i;
-    u_int	 sum;
+    u_int	 frac, real, sum;
 
-    /* Avoid divide by 0 potential error. */
-    sum = 1;
+    sum = 0;
     for (i = 0; i < cpu_cx_count; i++)
 	sum += cpu_cx_stats[i];
     sbuf_new(&sb, buf, sizeof(buf), SBUF_FIXEDLEN);
-    for (i = 0; i < cpu_cx_count; i++)
-	sbuf_printf(&sb, "%u%% ", (cpu_cx_stats[i] * 100) / sum);
+    for (i = 0; i < cpu_cx_count; i++) {
+	if (sum == 0)
+	    sbuf_printf(&sb, "0%% ");
+	else {
+	    real = cpu_cx_stats[i] * 100;
+	    frac = (real % sum) * 100;
+	    sbuf_printf(&sb, "%u.%02u%% ", real / sum, frac / sum);
+	}
+    }
     sbuf_trim(&sb);
     sbuf_finish(&sb);
     sysctl_handle_string(oidp, sbuf_data(&sb), sbuf_len(&sb), req);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040616131055.GA37637>