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 @@ -65,7 +65,6 @@ RTDECL(int) RTSystemQueryAvailableRam(uint64_t *pcb)
4      u_int cPagesMemFree = 0;
5      u_int cPagesMemInactive = 0;
6      u_int cPagesMemCached = 0;
7 -    u_int cPagesMemUsed = 0;
8      int cbPage = 0;
9      size_t cbParameter;
10      int cProcessed = 0;
11 @@ -73,25 +72,23 @@ RTDECL(int) RTSystemQueryAvailableRam(uint64_t *pcb)
12      cbParameter = sizeof(cPagesMemFree);
13      if (sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0))
14          rc = RTErrConvertFromErrno(errno);
15 -    cbParameter = sizeof(cPagesMemUsed);
16 -    if (   RT_SUCCESS(rc)
17 -        && sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0))
18 -        rc = RTErrConvertFromErrno(errno);
19      cbParameter = sizeof(cPagesMemInactive);
20      if (   RT_SUCCESS(rc)
21          && sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0))
22          rc = RTErrConvertFromErrno(errno);
23 +#if __FreeBSD_version < 1200016
24      cbParameter = sizeof(cPagesMemCached);
25      if (   RT_SUCCESS(rc)
26          && sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0))
27          rc = RTErrConvertFromErrno(errno);
28 +#endif
29      cbParameter = sizeof(cbPage);
30      if (   RT_SUCCESS(rc)
31          && sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0))
32          rc = RTErrConvertFromErrno(errno);
33 
34      if (RT_SUCCESS(rc))
35 -        *pcb = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * cbPage;
36 +        *pcb = ((uint64_t)cPagesMemFree + cPagesMemInactive + cPagesMemCached) * cbPage;
37 
38      return rc;
39  }
40