In our previous episode, Andrew Brunner said: > This was tested on Ubuntu x64 10.04 > 64bit AMD with 3Gigs of RAM > > Linux.SysInfo(@SI); > Load_Ram:=(100-Trunc(100 * SI.freeram / SI.totalram)); > > Si.totalram checks out ok. SI.freeram never seems to be accurate. > > The numbers returned here do not correspond to that of System Monitor > for the same user. > When using sudo ./startlazarus and debugging process (I'm debugging > project that requires low port numbers) the numbers are even more off. > > What is the problem with Linux? Windows GlobalMemoryStatus works just fine.
Windows api doesn't fluctuate so much with time. > This function is essential for server management and trouble shooting. Maybe they changed the record. I'm not sure it even was validated for 64-bit The simplest way to debug this is to make a minimal C program using the function, and then check the size of the record. If that is ok, check if the libc function does more than just passing all params on to the call. I got indications that something changed on Debian (also on 32-bit), but wasn't able to reproduce it http://bugs.freepascal.org/view.php?id=13521 the reporters there seem to indicate that it goes wrong with 2GB+ ram. _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
