Index | Thread | Search

From:
"Ted Unangst" <tedu@tedunangst.com>
Subject:
sysctl cpu hz
To:
tech@openbsd.org
Date:
Fri, 25 Apr 2025 15:17:56 -0400

Download raw body.

Thread
  • Ted Unangst:

    sysctl cpu hz

My CPU is too fast and I have trouble counting the zeros in sysctl hw.sensors.

For a frequency sensor greater than 10 MHz, display in Mhz instead.
Keep the old format when using -n, in case somebody scripted this.

hw.sensors.cpu0.frequency0=650.00 MHz
hw.sensors.cpu2.frequency0=700.00 MHz
hw.sensors.cpu4.frequency0=650.00 MHz

Index: sysctl.c
===================================================================
RCS file: /home/cvs/src/sbin/sysctl/sysctl.c,v
diff -u -p -r1.264 sysctl.c
--- sysctl.c	6 Apr 2025 17:36:22 -0000	1.264
+++ sysctl.c	25 Apr 2025 19:13:43 -0000
@@ -2751,6 +2751,7 @@ void
 print_sensor(struct sensor *s)
 {
 	const char *name;
+	double v;
 
 	if (s->flags & SENSOR_FUNKNOWN)
 		printf("unknown");
@@ -2841,7 +2842,12 @@ print_sensor(struct sensor *s)
 			printf("%.2f%%", s->value / 1000.0);
 			break;
 		case SENSOR_FREQ:
-			printf("%.2f Hz", s->value / 1000000.0);
+			v = s->value / 1000000.0;
+			if (!nflag && v > 10000000.0) {
+				printf("%.2f MHz", v / 1000000);
+			} else {
+				printf("%.2f Hz", v);
+			}
 			break;
 		case SENSOR_ANGLE:
 			printf("%3.4f degrees", s->value / 1000000.0);