$OpenBSD: patch-builtin_gc_c,v 1.4 2019/12/11 20:06:57 sthen Exp $

Replace sysctl HW_PHYSMEM/MEMSIZE/whatever madness with sysconf.

Index: builtin/gc.c
--- builtin/gc.c.orig
+++ builtin/gc.c
@@ -243,20 +243,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;
 
