| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "Utility/BsPlatformUtility.h"
- #include <uuid/uuid.h>
- #include <sys/sysctl.h>
- namespace bs
- {
- GPUInfo PlatformUtility::sGPUInfo;
- void PlatformUtility::terminate(bool force)
- {
- // TODOPORT - Support clean exit by sending the main window a quit message
- exit(0);
- }
- SystemInfo PlatformUtility::getSystemInfo()
- {
- char buffer[256];
- SystemInfo sysInfo;
- size_t bufferlen = sizeof(buffer);
- if(sysctlbyname("machdep.cpu.vendor", buffer, &bufferlen, nullptr, 0) == 0)
- sysInfo.cpuManufacturer = buffer;
- bufferlen = sizeof(buffer);
- if(sysctlbyname("machdep.cpu.brand_string", buffer, &bufferlen, nullptr, 0) == 0)
- sysInfo.cpuModel = buffer;
- bufferlen = sizeof(buffer);
- if(sysctlbyname("kern.osrelease", buffer, &bufferlen, nullptr, 0) == 0)
- sysInfo.osName = "macOS " + String(buffer);
- bufferlen = sizeof(buffer);
- if(sysctlbyname("kern.version", buffer, &bufferlen, nullptr, 0) == 0)
- sysInfo.osIs64Bit = strstr(buffer, "X86_64") != nullptr;
- else
- sysInfo.osIs64Bit = false;
- bufferlen = sizeof(buffer);
- if(sysctlbyname("hw.cpufrequency", buffer, &bufferlen, nullptr, 0) == 0)
- {
- UINT32 speedHz = *(UINT32*)buffer;
- sysInfo.cpuClockSpeedMhz = speedHz / (1000 * 1000);
- }
- else
- sysInfo.cpuClockSpeedMhz = 0;
- bufferlen = sizeof(buffer);
- if(sysctlbyname("hw.physicalcpu", buffer, &bufferlen, nullptr, 0) == 0)
- sysInfo.cpuNumCores = *(UINT32*)buffer;
- else
- sysInfo.cpuNumCores = 0;
- bufferlen = sizeof(buffer);
- if(sysctlbyname("hw.memsize", buffer, &bufferlen, nullptr, 0) == 0)
- {
- UINT64 memAmountBytes = *(UINT64*)buffer;
- sysInfo.memoryAmountMb = (UINT32)(memAmountBytes / (1024 * 1024));
- }
- else
- sysInfo.memoryAmountMb = 0;
- sysInfo.gpuInfo = sGPUInfo;
- return sysInfo;
- }
- UUID PlatformUtility::generateUUID()
- {
- uuid_t nativeUUID;
- uuid_generate(nativeUUID);
- return UUID(
- *(UINT32*)&nativeUUID[0],
- *(UINT32*)&nativeUUID[4],
- *(UINT32*)&nativeUUID[8],
- *(UINT32*)&nativeUUID[12]);
- }
- }
|