From 3dabe5238de015aa163491558173d03f98973ce9 Mon Sep 17 00:00:00 2001 From: kokorokonekuto <199444877+kokorokonekuto@users.noreply.github.com> Date: Mon, 16 Feb 2026 00:47:48 +0530 Subject: [PATCH 1/2] implement Sys_LowPhysicalMemory Currently tested on Linux (this should work on FreeBSD as well). --- code/sys/sys_unix.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/code/sys/sys_unix.c b/code/sys/sys_unix.c index 2ed5f1b0f2..38ae555d62 100644 --- a/code/sys/sys_unix.c +++ b/code/sys/sys_unix.c @@ -42,6 +42,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include +#if defined (__linux__) || defined (__FreeBSD__) +#include +#endif + +#ifdef __APPLE__ +#include +#include +#endif + qboolean stdinIsATTY; static char execBuffer[ 1024 ]; @@ -595,7 +604,26 @@ TODO */ qboolean Sys_LowPhysicalMemory( void ) { +#if defined (__linux__) || defined (__FreeBSD__) + struct sysinfo info; + + if ( sysinfo(&info) == -1 ) + return qfalse; + + return info.totalram <= MEM_THRESHOLD; +#elif defined (__APPLE__) + int mib[2] = { CTL_HW, HW_MEMSIZE }; + size_t len; + int64_t total_mem; + + len = sizeof(int64_t); + if ( sysctl(mib, 2, &total_mem, &len, NULL, 0) == -1 ) + return qfalse; + + return total_mem <= MEM_THRESHOLD; +#else return qfalse; +#endif } /* From f55de6af1d534db73803efdc2cfe06bcff8a3232 Mon Sep 17 00:00:00 2001 From: kokorokonekuto <199444877+kokorokonekuto@users.noreply.github.com> Date: Mon, 16 Feb 2026 01:15:21 +0530 Subject: [PATCH 2/2] fix on freebsd FreeBSD doesn't have Linux specific sysinfo --- code/sys/sys_unix.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/code/sys/sys_unix.c b/code/sys/sys_unix.c index 38ae555d62..60f6e643c8 100644 --- a/code/sys/sys_unix.c +++ b/code/sys/sys_unix.c @@ -42,11 +42,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include -#if defined (__linux__) || defined (__FreeBSD__) +#if defined (__linux__) #include #endif -#ifdef __APPLE__ +#if defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__APPLE__) #include #include #endif @@ -604,16 +604,23 @@ TODO */ qboolean Sys_LowPhysicalMemory( void ) { -#if defined (__linux__) || defined (__FreeBSD__) - struct sysinfo info; +#if defined (__linux__) + struct sysinfo info; if ( sysinfo(&info) == -1 ) return qfalse; return info.totalram <= MEM_THRESHOLD; -#elif defined (__APPLE__) +#elif defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__APPLE__) + #if defined (__FreeBSD__) + int mib[2] = { CTL_HW, HW_PHYSMEM }; + #elif defined (__OpenBSD__) + int mib[2] = { CTL_HW, HW_PHYSMEM64 }; + #elif defined (__APPLE__) int mib[2] = { CTL_HW, HW_MEMSIZE }; - size_t len; + #endif + + size_t len; int64_t total_mem; len = sizeof(int64_t);