32 lines
906 B
Text
32 lines
906 B
Text
Replace sysctl HW_PHYSMEM/MEMSIZE/whatever madness with sysconf.
|
|
|
|
Index: builtin/gc.c
|
|
--- builtin/gc.c.orig
|
|
+++ builtin/gc.c
|
|
@@ -369,20 +369,13 @@ static uint64_t total_ram(void)
|
|
|
|
if (!sysinfo(&si))
|
|
return si.totalram;
|
|
-#elif defined(HAVE_BSD_SYSCTL) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM))
|
|
- int64_t physical_memory;
|
|
- int mib[2];
|
|
- size_t length;
|
|
+#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)
|
|
+ long phys_pages, pagesize;
|
|
|
|
- mib[0] = CTL_HW;
|
|
-# if defined(HW_MEMSIZE)
|
|
- mib[1] = HW_MEMSIZE;
|
|
-# else
|
|
- mib[1] = HW_PHYSMEM;
|
|
-# endif
|
|
- length = sizeof(int64_t);
|
|
- if (!sysctl(mib, 2, &physical_memory, &length, NULL, 0))
|
|
- return physical_memory;
|
|
+ phys_pages = sysconf(_SC_PHYS_PAGES);
|
|
+ pagesize = sysconf(_SC_PAGESIZE);
|
|
+ if (phys_pages != -1 && pagesize != -1)
|
|
+ return (uint64_t)phys_pages * (uint64_t)pagesize;
|
|
#elif defined(GIT_WINDOWS_NATIVE)
|
|
MEMORYSTATUSEX memInfo;
|
|
|