mirror of
https://github.com/wolfpld/tracy
synced 2025-04-29 04:23:51 +00:00
Properly acknowledge unavailable symbol code.
This commit is contained in:
parent
abdd6020ba
commit
4bde9022e1
@ -684,6 +684,14 @@ void Profiler::AckSourceCodeNotAvailable()
|
||||
AppendDataUnsafe( &item, QueueDataSize[(int)QueueType::AckSourceCodeNotAvailable] );
|
||||
}
|
||||
|
||||
void Profiler::AckSymbolCodeNotAvailable()
|
||||
{
|
||||
QueueItem item;
|
||||
MemWrite( &item.hdr.type, QueueType::AckSymbolCodeNotAvailable );
|
||||
NeedDataSize( QueueDataSize[(int)QueueType::AckSymbolCodeNotAvailable] );
|
||||
AppendDataUnsafe( &item, QueueDataSize[(int)QueueType::AckSymbolCodeNotAvailable] );
|
||||
}
|
||||
|
||||
static BroadcastMessage& GetBroadcastMessage( const char* procname, size_t pnsz, int& len, int port )
|
||||
{
|
||||
static BroadcastMessage msg;
|
||||
@ -3103,7 +3111,7 @@ void Profiler::QueueExternalName( uint64_t ptr )
|
||||
void Profiler::QueueKernelCode( uint64_t symbol, uint32_t size )
|
||||
{
|
||||
assert( symbol >> 63 != 0 );
|
||||
AckServerQuery();
|
||||
AckSymbolCodeNotAvailable();
|
||||
}
|
||||
|
||||
#ifdef TRACY_HAS_CALLSTACK
|
||||
@ -3677,7 +3685,7 @@ void Profiler::HandleSymbolCodeQuery( uint64_t symbol, uint32_t size )
|
||||
// but not readable.
|
||||
if( !EnsureReadable( symbol ) )
|
||||
{
|
||||
AckServerQuery();
|
||||
AckSymbolCodeNotAvailable();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@ -763,6 +763,7 @@ private:
|
||||
|
||||
void AckServerQuery();
|
||||
void AckSourceCodeNotAvailable();
|
||||
void AckSymbolCodeNotAvailable();
|
||||
|
||||
void CalibrateTimer();
|
||||
void CalibrateDelay();
|
||||
|
@ -96,6 +96,7 @@ enum class QueueType : uint8_t
|
||||
ParamSetup,
|
||||
AckServerQueryNoop,
|
||||
AckSourceCodeNotAvailable,
|
||||
AckSymbolCodeNotAvailable,
|
||||
CpuTopology,
|
||||
SingleStringData,
|
||||
SecondStringData,
|
||||
@ -816,6 +817,7 @@ static constexpr size_t QueueDataSize[] = {
|
||||
sizeof( QueueHeader ) + sizeof( QueueParamSetup ),
|
||||
sizeof( QueueHeader ), // server query acknowledgement
|
||||
sizeof( QueueHeader ), // source code not available
|
||||
sizeof( QueueHeader ), // symbol code not available
|
||||
sizeof( QueueHeader ) + sizeof( QueueCpuTopology ),
|
||||
sizeof( QueueHeader ), // single string data
|
||||
sizeof( QueueHeader ), // second string data
|
||||
|
@ -282,6 +282,9 @@ void EventDebug( const QueueItem& ev )
|
||||
case QueueType::AckSourceCodeNotAvailable:
|
||||
fprintf( f, "ev %i (AckSourceCodeNotAvailable)\n", ev.hdr.idx );
|
||||
break;
|
||||
case QueueType::AckSymbolCodeNotAvailable:
|
||||
fprintf( f, "ev %i (AckSymbolCodeNotAvailable)\n", ev.hdr.idx );
|
||||
break;
|
||||
case QueueType::CpuTopology:
|
||||
fprintf( f, "ev %i (CpuTopology)\n", ev.hdr.idx );
|
||||
fprintf( f, "\tpackage = %" PRIu32 "\n", ev.cpuTopology.package );
|
||||
|
@ -3374,6 +3374,7 @@ void Worker::DispatchFailure( const QueueItem& ev, const char*& ptr )
|
||||
case QueueType::CodeInformation:
|
||||
case QueueType::AckServerQueryNoop:
|
||||
case QueueType::AckSourceCodeNotAvailable:
|
||||
case QueueType::AckSymbolCodeNotAvailable:
|
||||
m_serverQuerySpaceLeft++;
|
||||
break;
|
||||
default:
|
||||
@ -4835,6 +4836,10 @@ bool Worker::Process( const QueueItem& ev )
|
||||
m_sourceCodeQuery.erase( m_sourceCodeQuery.begin() );
|
||||
m_serverQuerySpaceLeft++;
|
||||
break;
|
||||
case QueueType::AckSymbolCodeNotAvailable:
|
||||
m_pendingSymbolCode--;
|
||||
m_serverQuerySpaceLeft++;
|
||||
break;
|
||||
case QueueType::CpuTopology:
|
||||
ProcessCpuTopology( ev.cpuTopology );
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user