mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.3 KiB
51 lines
1.3 KiB
#include "header.h" |
|
|
|
// get cpu id and information, you can use `proc/cpuinfo` |
|
string CPUinfo() |
|
{ |
|
char CPUBrandString[0x40]; |
|
unsigned int CPUInfo[4] = {0, 0, 0, 0}; |
|
|
|
// unix system |
|
// for windoes maybe we must add the following |
|
// __cpuid(regs, 0); |
|
// regs is the array of 4 positions |
|
__cpuid(0x80000000, CPUInfo[0], CPUInfo[1], CPUInfo[2], CPUInfo[3]); |
|
unsigned int nExIds = CPUInfo[0]; |
|
|
|
memset(CPUBrandString, 0, sizeof(CPUBrandString)); |
|
|
|
for (unsigned int i = 0x80000000; i <= nExIds; ++i) |
|
{ |
|
__cpuid(i, CPUInfo[0], CPUInfo[1], CPUInfo[2], CPUInfo[3]); |
|
|
|
if (i == 0x80000002) |
|
memcpy(CPUBrandString, CPUInfo, sizeof(CPUInfo)); |
|
else if (i == 0x80000003) |
|
memcpy(CPUBrandString + 16, CPUInfo, sizeof(CPUInfo)); |
|
else if (i == 0x80000004) |
|
memcpy(CPUBrandString + 32, CPUInfo, sizeof(CPUInfo)); |
|
} |
|
string str(CPUBrandString); |
|
return str; |
|
} |
|
|
|
// getOsName, this will get the OS of the current computer |
|
const char *getOsName() |
|
{ |
|
#ifdef _WIN32 |
|
return "Windows 32-bit"; |
|
#elif _WIN64 |
|
return "Windows 64-bit"; |
|
#elif __APPLE__ || __MACH__ |
|
return "Mac OSX"; |
|
#elif __linux__ |
|
return "Linux"; |
|
#elif __FreeBSD__ |
|
return "FreeBSD"; |
|
#elif __unix || __unix__ |
|
return "Unix"; |
|
#else |
|
return "Other"; |
|
#endif |
|
}
|
|
|