severity 275875 important
severity 255111 important
merge 276990 255111 275875
thanks
Patch allowing use on 2.6 kernels, and correcting a bug in the
reported size of the kernel (was <<10). This patch should be used
instead of the one on rtfo.org (which is not presently accessible, so
I cannot update it).
Justin
--- proc.c.old 2005-01-16 11:49:25.000000000 -0500
+++ proc.c 2005-01-16 20:31:34.000000000 -0500
@@ -23,6 +23,9 @@
/*
* Set values for various memory usages
*/
+#define MemTotalLine "MemTotal:"
+#define MemFreeLine "MemFree:"
+#define BuffersLine "Buffers:"
static void
SetMemInfo ( void )
{
@@ -63,12 +66,28 @@
{
if ( !strncmp ( buf , MemLine , MemLineLen ) )
{
+ /* Linux 2.4 (and earlier?) */
/* Mem: total used free shared buffers cached */
sscanf ( buf , "%*s %d %*d %d %*d %d" , &totalmem , &freemem ,
&buffermem ) ;
break ;
+
+ /* Linux 2.6 (and later?) */
+ } else if (!strncmp(buf, MemTotalLine, strlen(MemTotalLine))) {
+ sscanf(buf, "%*s %d", &totalmem);
+ } else if (!strncmp(buf, MemFreeLine, strlen(MemFreeLine))) {
+ sscanf(buf, "%*s %d", &freemem);
+ } else if (!strncmp(buf, BuffersLine, strlen(BuffersLine))) {
+ sscanf(buf, "%*s %d", &buffermem);
}
}
+
+ if (!totalmem) {
+ fprintf(stderr, "Fatal error reading /proc/meminfo\n");
+ exit(1);
+ }
+
+ sysmem /= 1024 ;
sysmem /= 1024 ;
totalmem /= 1024 ;
freemem /= 1024 ;