Changeset 46616 in vbox
- Timestamp:
- Jun 18, 2013 10:48:34 AM (11 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 3 edited
-
Runtime/Makefile.kmk (modified) (1 diff)
-
Runtime/r3/win/mp-win.cpp (modified) (1 diff)
-
VMM/VMMR3/CPUM.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/Makefile.kmk
r46593 r46616 565 565 generic/RTDirSetTimes-generic.cpp \ 566 566 generic/RTFileExists-generic.cpp \ 567 generic/RTMpGetCoreCount-generic.cpp \568 567 generic/RTMpGetCurFrequency-generic.cpp \ 569 568 generic/RTMpGetMaxFrequency-generic.cpp \ -
trunk/src/VBox/Runtime/r3/win/mp-win.cpp
r44528 r46616 91 91 } 92 92 93 RTDECL(RTCPUID) RTMpGetCoreCount(void) 94 { 95 PSYSTEM_LOGICAL_PROCESSOR_INFORMATION pSysInfo = NULL; 96 PSYSTEM_LOGICAL_PROCESSOR_INFORMATION pSysInfoTmp = NULL; 97 DWORD sysProcInfoLen = 0; 98 DWORD offset = 0; 99 DWORD coreCount = 0; 100 BOOL rc; 101 BOOL (WINAPI *pfnGetLogicalProcInfo)(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, PDWORD); 102 103 pfnGetLogicalProcInfo = (BOOL (WINAPI *)(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, PDWORD)) 104 GetProcAddress(GetModuleHandle("KERNEL32.DLL"), "GetLogicalProcessorInformation"); 105 /* 0 represent error condition. Can't return VERR* error codes as caller expects a unsigned value of core count.*/ 106 if (!pfnGetLogicalProcInfo) 107 return 0; 108 109 rc = pfnGetLogicalProcInfo(pSysInfo, &sysProcInfoLen); 110 if (rc == FALSE) 111 { 112 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) 113 { 114 RTMemFree(pSysInfo); 115 pSysInfo = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)RTMemAlloc(sysProcInfoLen); 116 if (!pSysInfo) 117 return 0; 118 } 119 else 120 return 0; 121 } 122 123 rc = pfnGetLogicalProcInfo(pSysInfo, &sysProcInfoLen); 124 if (rc == FALSE) 125 { 126 RTMemFree(pSysInfo); 127 return 0; 128 } 129 pSysInfoTmp = pSysInfo; 130 while (offset + sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) <= sysProcInfoLen) 131 { 132 switch (pSysInfoTmp->Relationship) 133 { 134 case RelationProcessorCore: 135 coreCount++; 136 break; 137 case RelationCache: 138 case RelationNumaNode: 139 case RelationProcessorPackage: 140 default: 141 ; 142 } 143 offset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); 144 pSysInfoTmp++; 145 } 146 RTMemFree(pSysInfo); 147 return coreCount; 148 } 93 149 94 150 RTDECL(PRTCPUSET) RTMpGetOnlineSet(PRTCPUSET pSet) -
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r46326 r46616 4280 4280 (unsigned)RTMpGetPresentCount(), (unsigned)RTMpGetCount(), (unsigned)RTMpGetOnlineCount(), 4281 4281 RTCpuSetToU64(RTMpGetOnlineSet(&OnlineSet)) )); 4282 LogRel(("Physical core count = %u\n", (unsigned)RTMpGetCoreCount() )); 4282 4283 LogRel(("************************* CPUID dump ************************\n")); 4283 4284 DBGFR3Info(pVM->pUVM, "cpuid", "verbose", DBGFR3InfoLogRelHlp());
Note:
See TracChangeset
for help on using the changeset viewer.

