View | Details | Raw Unified | Return to bug 211432 | Differences between
and this patch

Collapse All | Expand All

(-)emulators/virtualbox-ose/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp (+66 lines)
Line 0 Link Here
1
--- src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp.orig	2017-07-27 13:18:27 UTC
2
+++ src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp
3
@@ -58,45 +58,36 @@
4
 
5
 int CollectorFreeBSD::getHostMemoryUsage(ULONG *total, ULONG *used, ULONG *available)
6
 {
7
-    int rc = VINF_SUCCESS;
8
     u_long cbMemPhys = 0;
9
     u_int cPagesMemFree = 0;
10
-    u_int cPagesMemInactive = 0;
11
     u_int cPagesMemCached = 0;
12
     u_int cPagesMemUsed = 0;
13
     int cbPage = 0;
14
-    size_t cbParameter = sizeof(cbMemPhys);
15
-    int cProcessed = 0;
16
-
17
-    if (!sysctlbyname("hw.physmem", &cbMemPhys, &cbParameter, NULL, 0))
18
-        cProcessed++;
19
+    size_t cbParameter;
20
 
21
+    cbParameter = sizeof(cbMemPhys);
22
+    if (sysctlbyname("hw.physmem", &cbMemPhys, &cbParameter, NULL, 0))
23
+        return VERR_NOT_SUPPORTED;
24
     cbParameter = sizeof(cPagesMemFree);
25
-    if (!sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0))
26
-        cProcessed++;
27
+    if (sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0))
28
+        return VERR_NOT_SUPPORTED;
29
     cbParameter = sizeof(cPagesMemUsed);
30
-    if (!sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0))
31
-        cProcessed++;
32
-    cbParameter = sizeof(cPagesMemInactive);
33
-    if (!sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0))
34
-        cProcessed++;
35
+    if (sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0))
36
+        return VERR_NOT_SUPPORTED;
37
+#if __FreeBSD_version < 1200016
38
     cbParameter = sizeof(cPagesMemCached);
39
-    if (!sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0))
40
-        cProcessed++;
41
+    if (sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0))
42
+        return VERR_NOT_SUPPORTED;
43
+#endif
44
     cbParameter = sizeof(cbPage);
45
-    if (!sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0))
46
-        cProcessed++;
47
+    if (sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0))
48
+        return VERR_NOT_SUPPORTED;
49
 
50
-    if (cProcessed == 6)
51
-    {
52
-        *total     = cbMemPhys / _1K;
53
-        *used      = cPagesMemUsed * (cbPage / _1K);
54
-        *available = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * (cbPage / _1K);
55
-    }
56
-    else
57
-        rc = VERR_NOT_SUPPORTED;
58
+    *total     = cbMemPhys / _1K;
59
+    *used      = (ULONG64)cPagesMemUsed * (cbPage / _1K);
60
+    *available = ((ULONG64)cPagesMemFree + cPagesMemCached) * (cbPage / _1K);
61
 
62
-    return rc;
63
+    return VINF_SUCCESS;
64
 }
65
 
66
 int CollectorFreeBSD::getProcessCpuLoad(RTPROCESS process, ULONG *user, ULONG *kernel)
(-)emulators/virtualbox-ose/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp (+41 lines)
Line 0 Link Here
1
--- src/VBox/Runtime/r3/freebsd/systemmem-freebsd.cpp.orig	2017-07-27 13:18:46 UTC
2
+++ src/VBox/Runtime/r3/freebsd/systemmem-freebsd.cpp
3
@@ -63,9 +63,7 @@
4
 
5
     int rc = VINF_SUCCESS;
6
     u_int cPagesMemFree = 0;
7
-    u_int cPagesMemInactive = 0;
8
     u_int cPagesMemCached = 0;
9
-    u_int cPagesMemUsed = 0;
10
     int cbPage = 0;
11
     size_t cbParameter;
12
     int cProcessed = 0;
13
@@ -73,25 +71,19 @@
14
     cbParameter = sizeof(cPagesMemFree);
15
     if (sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0))
16
         rc = RTErrConvertFromErrno(errno);
17
-    cbParameter = sizeof(cPagesMemUsed);
18
-    if (   RT_SUCCESS(rc)
19
-        && sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0))
20
-        rc = RTErrConvertFromErrno(errno);
21
-    cbParameter = sizeof(cPagesMemInactive);
22
-    if (   RT_SUCCESS(rc)
23
-        && sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0))
24
-        rc = RTErrConvertFromErrno(errno);
25
+#if __FreeBSD_version < 1200016
26
     cbParameter = sizeof(cPagesMemCached);
27
     if (   RT_SUCCESS(rc)
28
         && sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0))
29
         rc = RTErrConvertFromErrno(errno);
30
+#endif
31
     cbParameter = sizeof(cbPage);
32
     if (   RT_SUCCESS(rc)
33
         && sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0))
34
         rc = RTErrConvertFromErrno(errno);
35
 
36
     if (RT_SUCCESS(rc))
37
-        *pcb = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * cbPage;
38
+        *pcb = ((uint64_t)cPagesMemFree + cPagesMemCached) * cbPage;
39
 
40
     return rc;
41
 }

Return to bug 211432