Index | Thread | Search

From:
Matthieu Herrb <matthieu@openbsd.org>
Subject:
human readable CPU frequencies in systat
To:
tech@openbsd.org
Date:
Mon, 4 Nov 2024 19:11:30 +0100

Download raw body.

Thread
Hi,

The crude patch below makes CPU frequencies human readable with -h in
`systat sensors`

I don't know if there is a better / cleaner way.

Index: Makefile
===================================================================
RCS file: /local/cvs/src/usr.bin/systat/Makefile,v
diff -u -p -u -r1.28 Makefile
--- Makefile	30 May 2018 13:43:50 -0000	1.28
+++ Makefile	4 Nov 2024 18:07:52 -0000
@@ -12,6 +12,6 @@ SRCS=	dkstats.c engine.c if.c inetname.c
 	pool.c malloc.c cpu.c uvm.c
 
 DPADD=	${LIBCURSES} ${LIBM} ${LIBKVM}
-LDADD=	-lcurses -lm -lkvm
+LDADD=	-lcurses -lm -lkvm -lutil
 
 .include <bsd.prog.mk>
Index: sensors.c
===================================================================
RCS file: /local/cvs/src/usr.bin/systat/sensors.c,v
diff -u -p -u -r1.32 sensors.c
--- sensors.c	15 Jul 2020 07:13:56 -0000	1.32
+++ sensors.c	4 Nov 2024 18:07:52 -0000
@@ -29,6 +29,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <util.h>
 #include "systat.h"
 
 struct sensor sensor;
@@ -274,7 +275,12 @@ showsensor(struct sensinfo *s)
 		tbprintf("%3.2f%%", s->sn_value / 1000.0);
 		break;
 	case SENSOR_FREQ:
-		tbprintf("%11.2f Hz", s->sn_value / 1000000.0);
+		if (humanreadable) {
+			char buf[FMT_SCALED_STRSIZE];
+			fmt_scaled(s->sn_value / 1000000.0, buf);
+			tbprintf("%sHz", buf);
+		} else
+			tbprintf("%11.2f Hz", s->sn_value / 1000000.0);
 		break;
 	case SENSOR_ANGLE:
 		tbprintf("%3.4f degrees", s->sn_value / 1000000.0);

-- 
Matthieu Herrb