diff options
| author | 2020-06-29 22:39:31 +0000 | |
|---|---|---|
| committer | 2020-06-29 22:41:22 +0000 | |
| commit | e6085ea35f0b2579a1df40ee4e24d02e47ee85bc (patch) | |
| tree | 0cf573d257ff95817201adf6d2998c31e45bc65e /src/common | |
| parent | Merge pull request #4140 from ReinUsesLisp/validation-layers (diff) | |
| download | yuzu-e6085ea35f0b2579a1df40ee4e24d02e47ee85bc.tar.gz yuzu-e6085ea35f0b2579a1df40ee4e24d02e47ee85bc.tar.xz yuzu-e6085ea35f0b2579a1df40ee4e24d02e47ee85bc.zip | |
common: add sysconf() fallback
src/common/memory_detect.cpp:15:10: fatal error: 'sys/sysinfo.h' file not found
#include <sys/sysinfo.h>
^~~~~~~~~~~~~~~
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/memory_detect.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/common/memory_detect.cpp b/src/common/memory_detect.cpp index 3fdc309a2..e981b9a2a 100644 --- a/src/common/memory_detect.cpp +++ b/src/common/memory_detect.cpp | |||
| @@ -9,10 +9,12 @@ | |||
| 9 | // clang-format on | 9 | // clang-format on |
| 10 | #else | 10 | #else |
| 11 | #include <sys/types.h> | 11 | #include <sys/types.h> |
| 12 | #ifdef __APPLE__ | 12 | #if defined(__APPLE__) || defined(__FreeBSD__) |
| 13 | #include <sys/sysctl.h> | 13 | #include <sys/sysctl.h> |
| 14 | #else | 14 | #elif defined(__linux__) |
| 15 | #include <sys/sysinfo.h> | 15 | #include <sys/sysinfo.h> |
| 16 | #else | ||
| 17 | #include <unistd.h> | ||
| 16 | #endif | 18 | #endif |
| 17 | #endif | 19 | #endif |
| 18 | 20 | ||
| @@ -42,11 +44,22 @@ static MemoryInfo Detect() { | |||
| 42 | sysctlbyname("vm.swapusage", &vmusage, &sizeof_vmusage, NULL, 0); | 44 | sysctlbyname("vm.swapusage", &vmusage, &sizeof_vmusage, NULL, 0); |
| 43 | mem_info.TotalPhysicalMemory = ramsize; | 45 | mem_info.TotalPhysicalMemory = ramsize; |
| 44 | mem_info.TotalSwapMemory = vmusage.xsu_total; | 46 | mem_info.TotalSwapMemory = vmusage.xsu_total; |
| 45 | #else | 47 | #elif defined(__FreeBSD__) |
| 48 | u_long physmem, swap_total; | ||
| 49 | std::size_t sizeof_u_long = sizeof(u_long); | ||
| 50 | // sysctlbyname(const char *, void *, size_t *, const void *, size_t); | ||
| 51 | sysctlbyname("hw.physmem", &physmem, &sizeof_u_long, NULL, 0); | ||
| 52 | sysctlbyname("vm.swap_total", &swap_total, &sizeof_u_long, NULL, 0); | ||
| 53 | mem_info.TotalPhysicalMemory = physmem; | ||
| 54 | mem_info.TotalSwapMemory = swap_total; | ||
| 55 | #elif defined(__linux__) | ||
| 46 | struct sysinfo meminfo; | 56 | struct sysinfo meminfo; |
| 47 | sysinfo(&meminfo); | 57 | sysinfo(&meminfo); |
| 48 | mem_info.TotalPhysicalMemory = meminfo.totalram; | 58 | mem_info.TotalPhysicalMemory = meminfo.totalram; |
| 49 | mem_info.TotalSwapMemory = meminfo.totalswap; | 59 | mem_info.TotalSwapMemory = meminfo.totalswap; |
| 60 | #else | ||
| 61 | mem_info.TotalPhysicalMemory = sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGE_SIZE); | ||
| 62 | mem_info.TotalSwapMemory = 0; | ||
| 50 | #endif | 63 | #endif |
| 51 | 64 | ||
| 52 | return mem_info; | 65 | return mem_info; |