netstar pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=d5790f65fb03bac5e99a59309bba58826e7e48f4

commit d5790f65fb03bac5e99a59309bba58826e7e48f4
Author: Alastair Poole <[email protected]>
Date:   Thu Apr 9 16:57:53 2020 +0100

    sysinfo: Fix swap for FreeBSD and DragonFlyBSD.
---
 src/modules/sysinfo/memusage/memusage_sysctl.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/modules/sysinfo/memusage/memusage_sysctl.c 
b/src/modules/sysinfo/memusage/memusage_sysctl.c
index bdfbe08a6..f4523aa75 100644
--- a/src/modules/sysinfo/memusage/memusage_sysctl.c
+++ b/src/modules/sysinfo/memusage/memusage_sysctl.c
@@ -49,6 +49,7 @@ _memusage_sysctl_getusage(unsigned long *mem_total,
    *mem_total = *mem_used = *mem_cached = *mem_buffers = *mem_shared = 0;
    *swp_total = *swp_used = 0;
 #if defined(__FreeBSD__) || defined(__DragonFly__)
+   size_t miblen;
    int total_pages = 0, free_pages = 0, inactive_pages = 0;
    long int result = 0;
    int page_size = getpagesize();
@@ -93,16 +94,19 @@ _memusage_sysctl_getusage(unsigned long *mem_total,
    if (result < 0) return;
    *swp_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) break;
+        if (sysctl(mib, miblen + 1, &xsw, &len, NULL, 0) == -1) break;
 
-        *swp_used += xsw.xsw_used * page_size;
+        *swp_used += (unsigned long)xsw.xsw_used * page_size;
      }
 
    *swp_used >>= 10;

-- 


Reply via email to