Mesa (staging/20.1): util/os_misc: os_get_available_system_memory() for OpenBSD

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Sep 2 13:58:49 UTC 2020


Module: Mesa
Branch: staging/20.1
Commit: 54ec859d58d7a909c6dc15489abaa6e3ab47531d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=54ec859d58d7a909c6dc15489abaa6e3ab47531d

Author: Jonathan Gray <jsg at jsg.id.au>
Date:   Fri Dec  6 01:21:07 2019 +1100

util/os_misc: os_get_available_system_memory() for OpenBSD

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.

Fixes: b80930a6fea ("anv: add support for VK_EXT_memory_budget")
Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
Acked-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6517>
(cherry picked from commit b30bd6fe5f254d895c1dec780f24518b3e880ed4)

---

 .pick_status.json  |  2 +-
 src/util/os_misc.c | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/.pick_status.json b/.pick_status.json
index d13bb4872a7..d0e0d759ec6 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -103,7 +103,7 @@
         "description": "util/os_misc: os_get_available_system_memory() for OpenBSD",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": "b80930a6fea075d2ef283ceac5a2a64e65fd7bc4"
     },
diff --git a/src/util/os_misc.c b/src/util/os_misc.c
index 954900e3c5d..e184edc893d 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



More information about the mesa-commit mailing list