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; --
