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