Changeset: 6a22cb5e0f47 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6a22cb5e0f47
Modified Files:
gdk/gdk_utils.mx
Branch: Apr2011
Log Message:
memory detection: fix for FreeBSD
FreeBSD has no 64-bits memory size retrieval method ( :( ), hence we'll
always be limited by the 32-bits boundary. 2GiB is always better than
0. Reorganise the logic such that we match the best, and abort
compilation if we can't find something that works.
diffs (77 lines):
diff --git a/gdk/gdk_utils.mx b/gdk/gdk_utils.mx
--- a/gdk/gdk_utils.mx
+++ b/gdk/gdk_utils.mx
@@ -500,8 +500,35 @@
GlobalMemoryStatus(&memStat);
_MT_npages = memStat.dwTotalPhys / _MT_pagesize;
}
-#elif defined(HAVE_SYS_SYSCTL_H) && (defined(HW_PHYSMEM64) ||
defined(HW_MEMSIZE) || defined(HW_PHYSMEM))
-# if SIZEOF_SIZE_T == SIZEOF_INT && defined(HW_PHYSMEM)
+#elif defined(HAVE_SYS_SYSCTL_H) && defined(HW_MEMSIZE)
+ /* Darwin, 64-bits */
+ {
+ uint64_t size = 0;
+ size_t len = sizeof(size);
+ int mib[2];
+
+ /* Everyone should have permission to make this call,
+ * if we get a failure something is really wrong. */
+ mib[0] = CTL_HW;
+ mib[1] = HW_MEMSIZE;
+ sysctl(mib, 2, &size, &len, NULL, 0);
+ _MT_npages = size / _MT_pagesize;
+ }
+#elif defined(HAVE_SYS_SYSCTL_H) && defined (HW_PHYSMEM64)
+ /* OpenBSD, 64-bits */
+ {
+ int64_t size = 0;
+ size_t len = sizeof(size);
+ int mib[2];
+
+ /* Everyone should have permission to make this call,
+ * if we get a failure something is really wrong. */
+ mib[0] = CTL_HW;
+ mib[1] = HW_PHYSMEM64;
+ sysctl(mib, 2, &size, &len, NULL, 0);
+ _MT_npages = size / _MT_pagesize;
+ }
+#elif defined(HAVE_SYS_SYSCTL_H) && defined(HW_PHYSMEM)
/* FreeBSD, NetBSD, OpenBSD, Darwin, 32-bits */
{
int size = 0;
@@ -515,35 +542,6 @@
sysctl(mib, 2, &size, &len, NULL, 0);
_MT_npages = size / _MT_pagesize;
}
-# elif defined(HW_MEMSIZE)
- /* FreeBSD, NetBSD, Darwin, 64-bits */
- {
- uint64_t size = 0;
- size_t len = sizeof(size);
- int mib[2];
-
- /* Everyone should have permission to make this call,
- * if we get a failure something is really wrong. */
- mib[0] = CTL_HW;
- mib[1] = HW_MEMSIZE;
- sysctl(mib, 2, &size, &len, NULL, 0);
- _MT_npages = size / _MT_pagesize;
- }
-# elif defined (HW_PHYSMEM64)
- /* OpenBSD, 64-bits */
- {
- int64_t size = 0;
- size_t len = sizeof(size);
- int mib[2];
-
- /* Everyone should have permission to make this call,
- * if we get a failure something is really wrong. */
- mib[0] = CTL_HW;
- mib[1] = HW_PHYSMEM64;
- sysctl(mib, 2, &size, &len, NULL, 0);
- _MT_npages = size / _MT_pagesize;
- }
-# endif
#elif defined(HAVE_SYSCONF) && defined(_SC_PHYS_PAGES)
_MT_npages = sysconf(_SC_PHYS_PAGES);
#else
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list