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 ;