CPUSTATES for top, kdesysguard etc.

Andreas Hauser andy at splashground.de
Mon Aug 15 03:47:42 PDT 2005


Hoi,

this centralizes CPUSTATES, which make it easier for top,
ksysguard etc.  Compatible to FreeBSD, but using an enum.

I also have patches for KDE to use that and will try
to submit it to them as soon as this is committed.

Andy

http://ftp.fortunaty.net/DragonFly/inofficial/patches/cpustates.patch


Index: sys/sys/resource.h
===================================================================
RCS file: /home/dcvs/src/sys/sys/resource.h,v
retrieving revision 1.8
diff -u -p -r1.8 resource.h
--- sys/sys/resource.h	27 Jul 2004 19:18:50 -0000	1.8
+++ sys/sys/resource.h	15 Aug 2005 10:18:10 -0000
@@ -134,6 +134,16 @@ struct loadavg {
 	long	fscale;
 };
 
+enum cpustates {
+        CP_USER	= 0,
+        CP_NICE	= 1,
+        CP_SYS	= 2,
+        CP_INTR	= 3,
+        CP_IDLE	= 4
+};
+
+#define CPUSTATES 5
+
 #ifdef _KERNEL
 extern struct loadavg averunnable;
 
Index: usr.bin/top/machine.c
===================================================================
RCS file: /home/dcvs/src/usr.bin/top/machine.c,v
retrieving revision 1.16
diff -u -p -r1.16 machine.c
--- usr.bin/top/machine.c	26 Jun 2005 04:36:35 -0000	1.16
+++ usr.bin/top/machine.c	13 Aug 2005 22:33:38 -0000
@@ -145,9 +145,8 @@ char *procstatenames[] = {
 };
 
 /* these are for detailing the cpu states */
-#define CPU_STATES 5
-int cpu_states[CPU_STATES];
-char *cpustatenames[CPU_STATES + 1] = {
+int cpu_states[CPUSTATES];
+char *cpustatenames[CPUSTATES + 1] = {
     "user", "nice", "system", "interrupt", "idle", NULL
 };
 
@@ -191,7 +190,7 @@ char *ordernames[] = {
 #endif
 
 static void
-cputime_percentages(int out[CPU_STATES], struct kinfo_cputime *new,
+cputime_percentages(int out[CPUSTATES], struct kinfo_cputime *new,
 		    struct kinfo_cputime *old)
 {
         struct kinfo_cputime diffs;
@@ -221,11 +220,11 @@ cputime_percentages(int out[CPU_STATES],
 	/* calculate percentages based on overall change, rounding up */
         half_total = total_change >> 1;
 
-	out[0] = ((diffs.cp_user * 1000LL + half_total) / total_change);
-        out[1] = ((diffs.cp_nice * 1000LL + half_total) / total_change);
-	out[2] = ((diffs.cp_sys * 1000LL + half_total) / total_change);
-        out[3] = ((diffs.cp_intr * 1000LL + half_total) / total_change);
-	out[4] = ((diffs.cp_idle * 1000LL + half_total) / total_change);
+	out[CP_USER] = ((diffs.cp_user * 1000LL + half_total) / total_change);
+        out[CP_NICE] = ((diffs.cp_nice * 1000LL + half_total) / total_change);
+	out[CP_SYS]  = ((diffs.cp_sys  * 1000LL + half_total) / total_change);
+        out[CP_INTR] = ((diffs.cp_intr * 1000LL + half_total) / total_change);
+	out[CP_IDLE] = ((diffs.cp_idle * 1000LL + half_total) / total_change);
 }
 
 int
Index: usr.bin/systat/vmstat.c
===================================================================
RCS file: /home/dcvs/src/usr.bin/systat/vmstat.c,v
retrieving revision 1.8
diff -u -p -r1.8 vmstat.c
--- usr.bin/systat/vmstat.c	22 Dec 2004 11:01:49 -0000	1.8
+++ usr.bin/systat/vmstat.c	15 Aug 2005 03:29:52 -0000
@@ -47,6 +47,7 @@
 #include <sys/uio.h>
 #include <sys/namei.h>
 #include <sys/sysctl.h>
+#include <sys/resource.h>
 #include <sys/vmmeter.h>
 
 #include <vm/vm_param.h>
@@ -395,8 +396,7 @@ labelkre(void)
 	putint((int)((float)s.fld/etime + 0.5), l, c, w)
 #define MAXFAIL 5
 
-#define CPUSTATES 5
-static	const char cpuchar[5] = { '=' , '+', '>', '-', ' ' };
+static	const char cpuchar[CPUSTATES] = { '=' , '+', '>', '-', ' ' };
 
 static	const size_t cpuoffsets[] = {
 	offsetof(struct kinfo_cputime, cp_sys),





More information about the Submit mailing list