summaryrefslogtreecommitdiff
path: root/sysutils/wmSMPmon
diff options
context:
space:
mode:
authoragc <agc@pkgsrc.org>2005-01-12 11:52:09 +0000
committeragc <agc@pkgsrc.org>2005-01-12 11:52:09 +0000
commit521a64f75500ced0ab8e9143f2652ba44bdc5089 (patch)
tree47b27c529cdf0b561a98984ea4710b34bb028b1a /sysutils/wmSMPmon
parent144c8c0beae8681278fa26a12eead95c5cc9068b (diff)
downloadpkgsrc-521a64f75500ced0ab8e9143f2652ba44bdc5089.tar.gz
Initial import of wmSMPmon-2.3 into the Packages Collection, provided by
Joel CARNAT in PR 28939, minor modifications by myself. wmSMPmon is a CPU monitoring applet for SMP systems running Window Maker. (it displays SMP CPU load just fine, despite what it says in the PR).
Diffstat (limited to 'sysutils/wmSMPmon')
-rw-r--r--sysutils/wmSMPmon/DESCR1
-rw-r--r--sysutils/wmSMPmon/Makefile20
-rw-r--r--sysutils/wmSMPmon/PLIST3
-rw-r--r--sysutils/wmSMPmon/distinfo6
-rw-r--r--sysutils/wmSMPmon/patches/patch-aa35
-rw-r--r--sysutils/wmSMPmon/patches/patch-ab242
6 files changed, 307 insertions, 0 deletions
diff --git a/sysutils/wmSMPmon/DESCR b/sysutils/wmSMPmon/DESCR
new file mode 100644
index 00000000000..46bb333ff7c
--- /dev/null
+++ b/sysutils/wmSMPmon/DESCR
@@ -0,0 +1 @@
+wmSMPmon is a CPU monitoring applet for SMP systems running Window Maker.
diff --git a/sysutils/wmSMPmon/Makefile b/sysutils/wmSMPmon/Makefile
new file mode 100644
index 00000000000..558756fda44
--- /dev/null
+++ b/sysutils/wmSMPmon/Makefile
@@ -0,0 +1,20 @@
+# $NetBSD: Makefile,v 1.1.1.1 2005/01/12 11:52:10 agc Exp $
+
+DISTNAME= wmSMPmon-2.3
+CATEGORIES= sysutils x11
+MASTER_SITES= http://goupilfr.org/arch/
+
+MAINTAINER= Joel CARNAT <joel@carnat.net>
+HOMEPAGE= http://goupilfr.org/?soft=wmsmpmon
+COMMENT= Dockable CPU (SMP) monitor
+
+WRKSRC= ${WRKDIR}/wmSMPmon-2.x/wmSMPmon
+
+USE_BUILDLINK3= yes
+USE_X11= yes
+
+post-install:
+ ${INSTALL_MAN} ${WRKSRC}/wmsmpmon.1 ${PREFIX}/man/man1/wmSMPmon.1
+
+.include "../../graphics/xpm/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/sysutils/wmSMPmon/PLIST b/sysutils/wmSMPmon/PLIST
new file mode 100644
index 00000000000..59040fc5916
--- /dev/null
+++ b/sysutils/wmSMPmon/PLIST
@@ -0,0 +1,3 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2005/01/12 11:52:10 agc Exp $
+bin/wmSMPmon
+man/man1/wmSMPmon.1
diff --git a/sysutils/wmSMPmon/distinfo b/sysutils/wmSMPmon/distinfo
new file mode 100644
index 00000000000..586ea426b52
--- /dev/null
+++ b/sysutils/wmSMPmon/distinfo
@@ -0,0 +1,6 @@
+$NetBSD: distinfo,v 1.1.1.1 2005/01/12 11:52:10 agc Exp $
+
+SHA1 (wmSMPmon-2.3.tar.gz) = 90d6665e7314fd4e5dd21cde5d90abd887e519cf
+Size (wmSMPmon-2.3.tar.gz) = 16413 bytes
+SHA1 (patch-aa) = 312453d6f8646453d9676451d182f7cf1d669515
+SHA1 (patch-ab) = 362d0fc7a3ed58b84a9ecbf894dac4752f5b8ee0
diff --git a/sysutils/wmSMPmon/patches/patch-aa b/sysutils/wmSMPmon/patches/patch-aa
new file mode 100644
index 00000000000..b82a55820b4
--- /dev/null
+++ b/sysutils/wmSMPmon/patches/patch-aa
@@ -0,0 +1,35 @@
+$NetBSD: patch-aa,v 1.1.1.1 2005/01/12 11:52:10 agc Exp $
+--- Makefile.orig 2003-03-10 13:54:28.000000000 +0100
++++ Makefile 2004-08-25 15:04:13.000000000 +0200
+@@ -3,21 +3,22 @@
+ SRC = wmSMPmon.c ../wmgeneral/wmgeneral.c
+ EXE = wmSMPmon
+-OBJ = $(SRC:.c=.o)
+-CFLAGS = -Wall -O3 -m486
+-LIB = -L/usr/X11R6/lib -lXpm -lXext -lX11
++OBJ = wmSMPmon.o ../wmgeneral/wmgeneral.o
++CFLAGS = -Wall -O3
++LIB = -L${X11BASE}/lib -Wl,-R${X11BASE}/lib -L${LOCALBASE}/lib -Wl,-R${LOCALBASE}/lib -lXpm -lXext -lX11
++INC = -I${X11BASE}/include -I${LOCALBASE}/include
+ INSTALL = /usr/bin/install
+ CC = gcc
+
+-all: $(OBJ)
+- $(CC) -o $(EXE) $(OBJ) $(LIB)
++all: ${OBJ}
++ ${CC} -o ${EXE} ${OBJ} ${INC} ${LIB}
+
+-$(OBJ): %.o : %.c
+- $(CC) $(CFLAGS) -c -o $@ $<
++.c.o:
++ ${CC} ${CFLAGS} ${INC} -c -o $@ $<
+
+ clean:
+- rm -rf $(EXE)
++ rm -rf ${EXE}
+ rm -rf *.o
+ rm -rf ../wmgeneral/*.o
+
+ install:
+- $(INSTALL) $(EXE) /usr/local/bin/
++ ${INSTALL} ${EXE} ${LOCALBASE}/bin
diff --git a/sysutils/wmSMPmon/patches/patch-ab b/sysutils/wmSMPmon/patches/patch-ab
new file mode 100644
index 00000000000..5323d3f3858
--- /dev/null
+++ b/sysutils/wmSMPmon/patches/patch-ab
@@ -0,0 +1,242 @@
+$NetBSD: patch-ab,v 1.1.1.1 2005/01/12 11:52:10 agc Exp $
+
+--- wmSMPmon.c.orig 2003-03-10 13:50:11.000000000 +0100
++++ wmSMPmon.c 2004-08-25 20:52:07.000000000 +0200
+@@ -9,5 +9,4 @@
+ *******************************************************************************/
+
+-#include <linux/sys.h>
+ #include <sys/param.h>
+ #include <sys/types.h>
+@@ -20,5 +19,8 @@
+ #include "wmSMPmon_master.xpm"
+ #include "wmSMPmon_mask.xbm"
+-#include <sys/utsname.h>
++//#include <sys/utsname.h>
++#include <sys/sched.h>
++#include <sys/swap.h>
++#include <sys/sysctl.h>
+
+ #define VERSION "2.2"
+@@ -35,12 +37,73 @@
+ void usage(void) ;
+
++int getCpuUsage() {
++ int mib[] = { CTL_KERN, KERN_CP_TIME };
++ u_int64_t cpu_time[CPUSTATES];
++ size_t size = sizeof(cpu_time);
++ int total, used, result;
++ static int pre_total, pre_used;
++
++ if (sysctl(mib, 2, &cpu_time, &size, NULL, 0) < 0)
++ return 0;
++ used = cpu_time[CP_USER] + cpu_time[CP_SYS] + cpu_time[CP_NICE] + cpu_time[CP_INTR];
++ total = used + cpu_time[CP_IDLE];
++ if ((pre_total == 0) || !(total - pre_total > 0)) {
++ result = 0;
++ } else {
++ result = 100 * (double)(used - pre_used) / (double)(total - pre_total);
++ }
++ pre_used = used;
++ pre_total = total;
++
++ return result;
++};
++
++int getMemUsage() {
++ static int mib[] = { CTL_VM, VM_METER };
++ struct vmtotal vm;
++ size_t size = sizeof(vm);
++ int per_mem;
++
++ per_mem = 0;
++ if (sysctl(mib, 2, &vm, &size, NULL, 0) < 0)
++ bzero(&vm, sizeof(vm));
++ if (vm.t_rm > 0)
++ per_mem = 100 * (double) vm.t_rm / (double) (vm.t_rm + vm.t_free);
++ if (per_mem > 97) per_mem = 100;
++
++ return per_mem;
++};
++
++int getSwapUsage() {
++ int num_swap;
++ struct swapent *swap_dev;
++ int i, sused, stotal;
++
++ stotal = sused = 0;
++
++ if ((num_swap = swapctl(SWAP_NSWAP, 0, 0)) == 0)
++ return 0;
++ if ((swap_dev = malloc(num_swap * sizeof(*swap_dev))) == NULL)
++ return 0;
++ if (swapctl(SWAP_STATS, swap_dev, num_swap) == -1)
++ return 0;
++
++ for (i = 0; i < num_swap; i++) {
++ if (swap_dev[i].se_flags & SWF_ENABLE) {
++ sused += swap_dev[i].se_inuse;
++ stotal += swap_dev[i].se_nblks;
++ }
++ }
++
++ free(swap_dev);
++ if (sused == 0)
++ return 0;
++ return (100 * (double) sused / (double) stotal);
++};
++
+ int main(int argc, char **argv)
+ {
+ XEvent Event ;
+
+- unsigned char *t = NULL,
+- *u = NULL,
+- tmp[192] ;
+-
+ unsigned int t0[TAILLE_T],
+ t1[TAILLE_T],
+@@ -57,7 +120,5 @@
+ draw_graph = FAUX ;
+
+- unsigned long mem, prec_mem = 0, prec_swap = 0,
+- total0o = 0, charge0o = 0,
+- total1o = 0, charge1o = 0, cpu0o=0, cpu1o=0 ;
++ unsigned long mem, prec_mem = 0, prec_swap = 0;
+
+ register unsigned long charge, total, cpu, i = 0 ;
+@@ -107,97 +168,25 @@
+ if(lecture)
+ {
+- i = open("/proc/stat", O_RDONLY);
+- read(i, tmp, 192);
+- close(i);
+-
+- strtok(tmp, "\n");
+- t = strtok(NULL, "\n");
+- u = strtok(NULL, "\n"); /* For CPU 1 */
+-
+- strtok(t, " "); /* CPU 0 */
+- charge = strtol(strtok(NULL, " "), NULL, 10) +
+- strtol(strtok(NULL, " "), NULL, 10) +
+- strtol(strtok(NULL, " "), NULL, 10);
+- total = charge+ strtol(strtok(NULL, " "), NULL, 10);
+- if(!charge || !total)
+- {
+- puts(ERREUR_SMP) ;
+- exit(ERREUR) ;
+- }
+- cpu = ((HAUTEUR * (charge - charge0o)) / (total - total0o + 0.001)) + 1 ;
+- total0o = total ;
+- charge0o = charge ;
+- cpu0t = cpu0t + cpu ;
+- if(cpu != cpu0o)
+- {
+- delta = HAUTEUR - cpu ;
+- copyXPMArea(111, 0, 3, HAUTEUR, 4, 5) ;
+- copyXPMArea(108, delta, 3, cpu, 4, 5 + delta) ;
+- cpu0o = cpu;
+- }
+- if(strncmp ("cpu1", u, 4) == 0)
+- {
+- strtok(u, " "); /* CPU 1*/
+- charge = strtol(strtok(NULL, " "), NULL, 10) +
+- strtol(strtok(NULL, " "), NULL, 10) +
+- strtol(strtok(NULL, " "), NULL, 10);
+- total = charge+ strtol(strtok(NULL, " "), NULL, 10);
+- cpu = ((HAUTEUR * (charge - charge1o)) / (total - total1o + 0.001)) + 1 ;
+- total1o = total;
+- charge1o = charge;
+- }
+- cpu1t = cpu1t + cpu ;
+- if(cpu != cpu1o)
+- {
+- delta = HAUTEUR - cpu ;
+- copyXPMArea(111, 0, 3, HAUTEUR, 9, 5) ;
+- copyXPMArea(108, delta, 3, cpu, 9, 5 + delta) ;
+- cpu1o = cpu;
+- }
+- if(c1 > DIV1)
+- {
+- i = open("/proc/meminfo", O_RDONLY);
+- read(i, tmp, 192);
+- close(i);
+- strtok(tmp, "\n");
+- t = strtok(NULL, "\n");
+- u = strtok(NULL, "\n");
+- strtok(t, " ");
+- total = atoi(strtok(NULL, " "));
+- charge = atoi(strtok(NULL, " "));
+- strtok(NULL, " ");
+- strtok(NULL, " ");
+- strtok(NULL, " ");
+- cpu = atoi(strtok(NULL, " "));
+-
+- mem = ((charge - cpu) / (total / 100)) ;
+- if(mem != prec_mem)
+- {
+- copyXPMArea(30, 63, 30, 8, 29, 39) ;
+- copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 39) ;
+- prec_mem = mem ;
+- }
+- strtok(u, " ");
+- if(!no_swap)
+- {
+- total = charge = 0 ;
+- total = atoi(strtok(NULL, " "));
+- strtok(NULL, " ");
+- charge = atoi(strtok(NULL, " "));
+- if(!charge || !total)
+- {
+- puts(ERREUR_SWP) ;
+- exit(ERREUR) ;
+- }
+- mem = 100 - (charge / (total / 100)) ;
+- if(mem != prec_swap)
+- {
+- copyXPMArea(30, 63, 30, 8, 29, 50) ;
+- copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 50) ;
+- prec_swap = mem ;
+- }
+- }
+- c1 = 0;
+- }
++ cpu = getCpuUsage();
++ delta = (100 - cpu) * HAUTEUR / 100;
++ copyXPMArea(108, 0, 3, HAUTEUR, 4, 5);
++ copyXPMArea(108, 0, 3, HAUTEUR, 9, 5);
++ copyXPMArea(111, 0, 3, delta, 4, 5);
++ copyXPMArea(111, 0, 3, delta, 9, 5);
++
++ mem = getMemUsage();
++ if(mem != prec_mem) {
++ copyXPMArea(30, 63, 30, 8, 29, 39);
++ copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 39);
++ prec_mem = mem;
++ }
++ if(!no_swap) {
++ mem = getSwapUsage();
++ if(mem != prec_swap) {
++ copyXPMArea(30, 63, 30, 8, 29, 50);
++ copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 50);
++ prec_swap = mem;
++ }
++ }
+ if(c2 > DIV2)
+ draw_graph = VRAI ;
+@@ -210,10 +199,13 @@
+ tm[i - 1] = tm[i] ;
+ }
+- if((t0[TAILLE_T - 1] = cpu0t / c2) > HAUTEUR)
++/* if((t0[TAILLE_T - 1] = cpu0t / c2) > HAUTEUR)
+ t0[TAILLE_T - 1] = HAUTEUR ;
+ if((t1[TAILLE_T - 1] = cpu1t / c2) > HAUTEUR)
+ t1[TAILLE_T - 1] = HAUTEUR ;
+ if((tm[TAILLE_T - 1] = (cpu0t + cpu1t) / (2 * c2)) > HAUTEUR)
+- tm[TAILLE_T - 1] = HAUTEUR ;
++ tm[TAILLE_T - 1] = HAUTEUR ;*/
++ t0[TAILLE_T - 1] = cpu * HAUTEUR / 100;
++ t1[TAILLE_T - 1] = cpu * HAUTEUR / 100;
++ tm[TAILLE_T - 1] = cpu * HAUTEUR / 100;
+ cpu0t = 0 ;
+ cpu1t = 0 ;