ports/60502: [patch] x11/kdebase3: fix memory statistics of ksysguardd

Markus Brueffer brueffer at phoenix-systems.de
Mon Dec 22 12:40:23 UTC 2003


>Number:         60502
>Category:       ports
>Synopsis:       [patch] x11/kdebase3: fix memory statistics of ksysguardd
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Dec 22 04:40:17 PST 2003
>Closed-Date:
>Last-Modified:
>Originator:     Markus Brueffer
>Release:        FreeBSD 5.2-CURRENT i386
>Organization:
>Environment:
System: FreeBSD cheops.phoenix 5.2-CURRENT FreeBSD 5.2-CURRENT #16: Mon Dec 22 00:35:14 CET 2003 root at cheops.phoenix:/usr/obj/usr/src/sys/CHEOPS i386

>Description:
	The default memory-pane of ksysguard fails to display any memory statistics.
	This is caused by a lacking implementation of the sensor mem/physical/application
	in ksysguardd.

	The attached patches implement this sensor.

This causes updating of the default mem-pane to fail.

>How-To-Repeat:
>Fix:

--- kdebase3.diff begins here ---
diff -ruN kdebase3.orig/files/patch-ksysguard-ksysguardd-FreeBSD-Memory.c kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-Memory.c
--- kdebase3.orig/files/patch-ksysguard-ksysguardd-FreeBSD-Memory.c	Thu Jan  1 01:00:00 1970
+++ kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-Memory.c	Mon Dec 22 13:15:43 2003
@@ -0,0 +1,71 @@
+--- ksysguard/ksysguardd/FreeBSD/Memory.c.orig	Mon Dec 15 01:58:03 2003
++++ ksysguard/ksysguardd/FreeBSD/Memory.c	Mon Dec 15 03:26:35 2003
+@@ -45,6 +45,7 @@
+ static size_t Used = 0;
+ static size_t Buffers = 0;
+ static size_t Cached = 0;
++static size_t Application = 0;
+ static size_t STotal = 0;
+ static size_t SFree = 0;
+ static size_t SUsed = 0;
+@@ -66,6 +67,7 @@
+ 	registerMonitor("mem/physical/used", "integer", printUsed, printUsedInfo, sm);
+ 	registerMonitor("mem/physical/buf", "integer", printBuffers, printBuffersInfo, sm);
+ 	registerMonitor("mem/physical/cached", "integer", printCached, printCachedInfo, sm);
++	registerMonitor("mem/physical/application", "integer", printApplication, printApplicationInfo, sm);
+ 	registerMonitor("mem/swap/free", "integer", printSwapFree, printSwapFreeInfo, sm);
+ 	registerMonitor("mem/swap/used", "integer", printSwapUsed, printSwapUsedInfo, sm);
+ }
+@@ -80,7 +82,6 @@
+ updateMemory(void)
+ {
+ 	size_t len;
+-	struct vmtotal p;
+ 	FILE *file;
+ 	char buf[256];
+ 	struct kvm_swap kswap[16];
+@@ -108,18 +109,18 @@
+                 Buffers = 0; /* Doesn't work under FreeBSD v2.2.x */
+         Buffers /= 1024;
+ 
+-
+         len = sizeof (Cached);
+         if ((sysctlbyname("vm.stats.vm.v_cache_count", &Cached, &len, NULL, 0) == -1) || !len)
+                 Cached = 0; /* Doesn't work under FreeBSD v2.2.x */
+-        Cached *= getpagesize() / 1024;
++        Cached *= pagesize / 1024;
+ 
++	len = sizeof (MFree);
++	if ((sysctlbyname("vm.stats.vm.v_free_count", &MFree, &len, NULL, 0) == -1) || !len)
++		MFree = 0; /* Doesn't work under FreeBSD v2.2.x */
++	MFree *= pagesize / 1024;
+ 
+-	/* initializes the pointer to the vmmeter struct */
+-	len = sizeof (p);
+-	sysctlbyname("vm.vmmeter", &p, &len, NULL, 0);
+-        MFree = p.t_free * getpagesize() / 1024;
+-        Used = p.t_arm * getpagesize() / 1024 + Buffers + Cached;
++	Used = Total - MFree;
++	Application = Used - Buffers - Cached;
+ 
+ 	return 0;
+ }
+@@ -170,6 +171,18 @@
+ printCachedInfo(const char* cmd)
+ {
+ 	fprintf(CurrentClient, "Cached Memory\t0\t%d\tKB\n", Total);
++}
++
++void
++printApplication(const char* cmd)
++{
++	fprintf(CurrentClient, "%d\n", Application);
++}
++
++void
++printApplicationInfo(const char* cmd)
++{
++	fprintf(CurrentClient, "Application Memory\t0\t%d\tKB\n", Total);
+ }
+ 
+ void
diff -ruN kdebase3.orig/files/patch-ksysguard-ksysguardd-FreeBSD-Memory.h kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-Memory.h
--- kdebase3.orig/files/patch-ksysguard-ksysguardd-FreeBSD-Memory.h	Thu Jan  1 01:00:00 1970
+++ kdebase3/files/patch-ksysguard-ksysguardd-FreeBSD-Memory.h	Mon Dec 22 13:15:43 2003
@@ -0,0 +1,11 @@
+--- ksysguard/ksysguardd/FreeBSD/Memory.h.orig	Mon Dec 15 01:58:03 2003
++++ ksysguard/ksysguardd/FreeBSD/Memory.h	Mon Dec 15 01:58:03 2003
+@@ -36,6 +36,8 @@
+ void printBuffersInfo(const char* cmd);
+ void printCached(const char* cmd);
+ void printCachedInfo(const char* cmd);
++void printApplication(const char* cmd);
++void printApplicationInfo(const char* cmd);
+ void printSwapUsed(const char* cmd);
+ void printSwapUsedInfo(const char* cmd);
+ void printSwapFree(const char* cmd);
--- kdebase3.diff ends here ---



>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list