* bug 7995 fixed - Function getfreememory adapted for FreeBSD. Thanks to Rob 96/2196/2
Rob Farmer [Tue, 5 Oct 2010 09:25:12 +0000 (11:25 +0200)]
Farmer.

Change-Id: Ie85ad6c9abd398e25b89a0d01fad34b1abb1f66b

scilab/CHANGES_5.3.X
scilab/modules/core/src/c/getmemory.c

index 84de093..ba8c453 100644 (file)
@@ -51,6 +51,9 @@ Bug Fixes:
 
 * bug 7768 fixed - for cdfgam, the Scale parameter was, in fact, the Rate.
 
+* bug 7997 fixed - Function getfreememory adapted for FreeBSD. Thanks to Rob
+                   Farmer.
+
 * bug 8046 fixed - msprintf did not manage tabulation as format.
 
 * bug 8068 fixed - Figures were not all closed at the end of a demonstration.
index e96646e..caaa1bd 100644 (file)
 #include <sys/sysctl.h>
 #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
 #define PAGESHIFT_UNDEF -100
+#elif defined(__FreeBSD__)
+#include <sys/param.h>
+#include <sys/sysctl.h>
 #endif
 
+
 #include <stdio.h>
 #define kooctet 1024
 int getfreememory(void)
@@ -165,6 +169,12 @@ int getfreememory(void)
 
     return 0;
   }
+#elif defined(__FreeBSD__)
+  int avphys_pages;
+  size_t oldlenp = sizeof (avphys_pages);
+  sysctlbyname("vm.stats.vm.v_free_count", &avphys_pages, &oldlenp, NULL, NULL);
+  return (avphys_pages / kooctet) * sysconf(_SC_PAGESIZE); 
+
 #else
   /* Solaris and others assumed*/
   return (sysconf(_SC_AVPHYS_PAGES)/kooctet)*sysconf(_SC_PAGESIZE);