From e8fcc250a1f94c52ea0ad553ab8c437d049d741b Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sat, 30 Nov 2019 01:51:29 +0100 Subject: [PATCH] Report CPU topology on Linux. --- client/TracyProfiler.cpp | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index 480ab970..311af967 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -2544,6 +2544,53 @@ void Profiler::ReportTopology() tracy_free( cpuData ); tracy_free( coreInfo ); tracy_free( packageInfo ); +#elif defined __linux__ + const int numcpus = std::thread::hardware_concurrency(); + auto cpuData = (CpuData*)tracy_malloc( sizeof( CpuData ) * numcpus ); + memset( cpuData, 0, sizeof( CpuData ) * numcpus ); + + const char* basePath = "/sys/devices/system/cpu/cpu"; + for( int i=0; iget_tail_index(); + auto item = token->enqueue_begin( magic ); + MemWrite( &item->hdr.type, QueueType::CpuTopology ); + MemWrite( &item->cpuTopology.package, data.package ); + MemWrite( &item->cpuTopology.core, data.core ); + MemWrite( &item->cpuTopology.thread, data.thread ); + +#ifdef TRACY_ON_DEMAND + DeferItem( *item ); +#endif + + tail.store( magic + 1, std::memory_order_release ); + } + + tracy_free( cpuData ); #endif }