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