mirror of
https://github.com/wolfpld/tracy
synced 2025-04-30 12:53:51 +00:00
Check for errors from GetLogicalProcessorInformationEx().
This commit is contained in:
parent
e26c34346b
commit
8e3d250654
@ -3740,23 +3740,48 @@ void Profiler::ReportTopology()
|
|||||||
# endif
|
# endif
|
||||||
if( !_GetLogicalProcessorInformationEx ) return;
|
if( !_GetLogicalProcessorInformationEx ) return;
|
||||||
|
|
||||||
|
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX* packageInfo = nullptr;
|
||||||
|
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX* dieInfo = nullptr;
|
||||||
|
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX* coreInfo = nullptr;
|
||||||
|
|
||||||
DWORD psz = 0;
|
DWORD psz = 0;
|
||||||
_GetLogicalProcessorInformationEx( RelationProcessorPackage, nullptr, &psz );
|
_GetLogicalProcessorInformationEx( RelationProcessorPackage, nullptr, &psz );
|
||||||
auto packageInfo = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)tracy_malloc( psz );
|
if( GetLastError() == ERROR_INSUFFICIENT_BUFFER )
|
||||||
auto res = _GetLogicalProcessorInformationEx( RelationProcessorPackage, packageInfo, &psz );
|
{
|
||||||
assert( res );
|
packageInfo = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)tracy_malloc( psz );
|
||||||
|
auto res = _GetLogicalProcessorInformationEx( RelationProcessorPackage, packageInfo, &psz );
|
||||||
|
assert( res );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
psz = 0;
|
||||||
|
}
|
||||||
|
|
||||||
DWORD dsz = 0;
|
DWORD dsz = 0;
|
||||||
_GetLogicalProcessorInformationEx( RelationProcessorDie, nullptr, &dsz );
|
_GetLogicalProcessorInformationEx( RelationProcessorDie, nullptr, &dsz );
|
||||||
auto dieInfo = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)tracy_malloc( dsz );
|
if( GetLastError() == ERROR_INSUFFICIENT_BUFFER )
|
||||||
res = _GetLogicalProcessorInformationEx( RelationProcessorDie, dieInfo, &dsz );
|
{
|
||||||
assert( res );
|
dieInfo = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)tracy_malloc( dsz );
|
||||||
|
auto res = _GetLogicalProcessorInformationEx( RelationProcessorDie, dieInfo, &dsz );
|
||||||
|
assert( res );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dsz = 0;
|
||||||
|
}
|
||||||
|
|
||||||
DWORD csz = 0;
|
DWORD csz = 0;
|
||||||
_GetLogicalProcessorInformationEx( RelationProcessorCore, nullptr, &csz );
|
_GetLogicalProcessorInformationEx( RelationProcessorCore, nullptr, &csz );
|
||||||
auto coreInfo = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)tracy_malloc( csz );
|
if( GetLastError() == ERROR_INSUFFICIENT_BUFFER )
|
||||||
res = _GetLogicalProcessorInformationEx( RelationProcessorCore, coreInfo, &csz );
|
{
|
||||||
assert( res );
|
coreInfo = (SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX*)tracy_malloc( csz );
|
||||||
|
auto res = _GetLogicalProcessorInformationEx( RelationProcessorCore, coreInfo, &csz );
|
||||||
|
assert( res );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
csz = 0;
|
||||||
|
}
|
||||||
|
|
||||||
SYSTEM_INFO sysinfo;
|
SYSTEM_INFO sysinfo;
|
||||||
GetSystemInfo( &sysinfo );
|
GetSystemInfo( &sysinfo );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user