File 0728-os_mon-Fix-use-available-mem-for-system_memory_high_.patch of Package erlang

From 4b0ef3f79643dc038d1cbf34740a9aabccb97a4e Mon Sep 17 00:00:00 2001
From: Maas-Maarten Zeeman <mmzeeman@xs4all.nl>
Date: Tue, 3 Sep 2024 15:10:47 +0200
Subject: [PATCH 1/2] os_mon: Fix use available mem for
 system_memory_high_watermark alarm

---
 lib/os_mon/c_src/memsup.c        | 13 +++++++++----
 lib/os_mon/test/memsup_SUITE.erl |  3 +++
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/os_mon/c_src/memsup.c b/lib/os_mon/c_src/memsup.c
index 96f662da19..ad4a193d99 100644
--- a/lib/os_mon/c_src/memsup.c
+++ b/lib/os_mon/c_src/memsup.c
@@ -446,9 +446,10 @@ get_extended_mem_apple(memory_ext *me) {
     }
 
     me->free = vm_stat.free_count * mach_page_size;
+    me->available = (vm_stat.inactive_count + vm_stat.free_count) * mach_page_size;
     me->total = total_memory_size;
     me->pagesize = 1;
-    me->flag = F_MEM_TOTAL | F_MEM_FREE;
+    me->flag = F_MEM_TOTAL | F_MEM_FREE | F_MEM_AVAIL;
 }
 #endif
 
@@ -508,7 +509,11 @@ get_basic_mem(unsigned long *tot, unsigned long *used, unsigned long *pagesize){
     }
     *tot      = me.total;
     *pagesize = me.pagesize;
-    *used     = me.total - me.free;
+    if (me.flag & F_MEM_AVAIL) {
+        *used = me.total - me.available;
+    } else {
+        *used = me.total - me.free;
+    }
 #elif defined(BSD4_4)
     struct vmtotal vt;
     long pgsz;
@@ -535,9 +540,9 @@ fail:
 #elif defined(__APPLE__)
     {
         memory_ext me;
-        me.free = 0;
+        me.available = 0;
         get_extended_mem_apple(&me);
-        *used = me.total - me.free;
+        *used = me.total - me.available;
         *tot = total_memory_size;
         *pagesize = 1;
     }
diff --git a/lib/os_mon/test/memsup_SUITE.erl b/lib/os_mon/test/memsup_SUITE.erl
index 1f66ea0afa..262d3a6696 100644
--- a/lib/os_mon/test/memsup_SUITE.erl
+++ b/lib/os_mon/test/memsup_SUITE.erl
@@ -758,6 +758,9 @@ improved_system_memory_data(Config) when is_list(Config) ->
                 _ ->
                     {comment, "No available_memory present in result"}
             end;
+        {unix,darwin} ->
+            true = AvailableMemoryPresent,
+            {comment, "available_memory present in result"};
         _ ->
             ok
     end.
-- 
2.43.0

openSUSE Build Service is sponsored by