#include "gpu_info.h" // Fallbacks for CPU mode #ifdef _WIN32 #include <sysinfoapi.h> void cpu_check_ram(mem_info_t *resp) { resp->err = NULL; MEMORYSTATUSEX info; info.dwLength = sizeof(info); if (GlobalMemoryStatusEx(&info) != 0) { resp->count = 1; resp->total = info.ullTotalPhys; resp->free = info.ullAvailPhys; } else { resp->err = LOAD_ERR(); } return; } #elif __linux__ #include <errno.h> #include <string.h> #include <sys/sysinfo.h> void cpu_check_ram(mem_info_t *resp) { struct sysinfo info; resp->err = NULL; if (sysinfo(&info) != 0) { resp->err = strdup(strerror(errno)); } else { resp->count = 1; resp->total = info.totalram * info.mem_unit; resp->free = info.freeram * info.mem_unit; } return; } #elif __APPLE__ // TODO consider an Apple implementation that does something useful // mem_info_t cpu_check_ram() { // mem_info_t resp = {0, 0, NULL}; // return resp; // } #else #error "Unsupported platform" #endif