Return the smallest value of available non-kernel physical memory and the static per process data size limit as the amount of available system memory on OpenBSD.
Signed-off-by: Jonathan Gray <j...@jsg.id.au> --- src/util/os_misc.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/util/os_misc.c b/src/util/os_misc.c index 581e15f3934..9b13dcdb9f8 100644 --- a/src/util/os_misc.c +++ b/src/util/os_misc.c @@ -28,6 +28,7 @@ #include "os_misc.h" #include "os_file.h" +#include "macros.h" #include <stdarg.h> @@ -57,6 +58,9 @@ # include <log/log.h> #elif DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS || DETECT_OS_HURD # include <unistd.h> +#elif DETECT_OS_OPENBSD +# include <sys/resource.h> +# include <sys/sysctl.h> #elif DETECT_OS_APPLE || DETECT_OS_BSD # include <sys/sysctl.h> #elif DETECT_OS_HAIKU @@ -209,6 +213,22 @@ os_get_available_system_memory(uint64_t *size) free(meminfo); return false; +#elif DETECT_OS_OPENBSD + struct rlimit rl; + int mib[] = { CTL_HW, HW_USERMEM64 }; + int64_t mem_available; + size_t len = sizeof(mem_available); + + /* physmem - wired */ + if (sysctl(mib, 2, &mem_available, &len, NULL, 0) == -1) + return false; + + /* static login.conf limit */ + if (getrlimit(RLIMIT_DATA, &rl) == -1) + return false; + + *size = MIN2(mem_available, rl.rlim_cur); + return true; #else return false; #endif -- 2.24.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev