Ken Thomases : kernel32: Use sysctl(VM_SWAPUSAGE) to get swap sizes on BSDs, if available.

Alexandre Julliard julliard at winehq.org
Mon Feb 17 13:45:14 CST 2014


Module: wine
Branch: master
Commit: 9b7c94bc55379941dd549c492424e3079b914b55
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9b7c94bc55379941dd549c492424e3079b914b55

Author: Ken Thomases <ken at codeweavers.com>
Date:   Sun Feb 16 20:43:42 2014 -0600

kernel32: Use sysctl(VM_SWAPUSAGE) to get swap sizes on BSDs, if available.

---

 dlls/kernel32/heap.c |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c
index 646890a..fb0b07d 100644
--- a/dlls/kernel32/heap.c
+++ b/dlls/kernel32/heap.c
@@ -1158,6 +1158,9 @@ BOOL WINAPI GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpmemex )
 #ifdef HW_MEMSIZE
     uint64_t val64;
 #endif
+#ifdef VM_SWAPUSAGE
+    struct xsw_usage swap;
+#endif
 #elif defined(sun)
     unsigned long pagesize,maxpages,freepages,swapspace,swapfree;
     struct anoninfo swapinf;
@@ -1253,6 +1256,17 @@ BOOL WINAPI GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpmemex )
 
     lpmemex->ullTotalPageFile = lpmemex->ullAvailPhys;
     lpmemex->ullAvailPageFile = lpmemex->ullAvailPhys;
+
+#ifdef VM_SWAPUSAGE
+    mib[0] = CTL_VM;
+    mib[1] = VM_SWAPUSAGE;
+    size_sys = sizeof(swap);
+    if (!sysctl(mib, 2, &swap, &size_sys, NULL, 0) && size_sys == sizeof(swap))
+    {
+        lpmemex->ullTotalPageFile = swap.xsu_total;
+        lpmemex->ullAvailPageFile = swap.xsu_avail;
+    }
+#endif
 #elif defined ( sun )
     pagesize=sysconf(_SC_PAGESIZE);
     maxpages=sysconf(_SC_PHYS_PAGES);




More information about the wine-cvs mailing list