netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=0ff9d44b39892fe42be4ca4f3d9004064ec97d49

commit 0ff9d44b39892fe42be4ca4f3d9004064ec97d49
Author: Alastair Poole <[email protected]>
Date:   Thu Apr 9 16:55:58 2020 +0100

    FreeBSD: Fix Swap
---
 src/bin/system.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/bin/system.c b/src/bin/system.c
index 14aa094..b7c6d0b 100644
--- a/src/bin/system.c
+++ b/src/bin/system.c
@@ -422,7 +422,7 @@ static void
 _memory_usage_get(meminfo_t *memory)
 {
 #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
-   size_t len = 0;
+   size_t len = 0, miblen;
    int i = 0;
 #endif
    memset(memory, 0, sizeof(meminfo_t));
@@ -538,17 +538,20 @@ _memory_usage_get(meminfo_t *memory)
      return;
    memory->swap_total = (result / 1024);
 
+   miblen = 3;
+   if (sysctlnametomib("vm.swap_info", mib, &miblen) == -1) return;
+
    struct xswdev xsw;
    /* previous mib is important for this one... */
 
-   while (i++)
+   for (i = 0; ; i++)
      {
-        mib[2] = i;
+        mib[miblen] = i;
         len = sizeof(xsw);
-        if (sysctl(mib, 3, &xsw, &len, NULL, 0) == -1)
+        if (sysctl(mib, miblen + 1, &xsw, &len, NULL, 0) == -1)
           break;
 
-        memory->swap_used += xsw.xsw_used * page_size;
+        memory->swap_used += (unsigned long) xsw.xsw_used * page_size;
      }
 
    memory->swap_used >>= 10;

-- 


Reply via email to