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),

Reply via email to