mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Shared lock events (still using old functionality).
This commit is contained in:
parent
1bddf76f8d
commit
bcf2bf1c5c
@ -211,7 +211,7 @@ public:
|
|||||||
auto& token = s_token.ptr;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockWait;
|
item->hdr.type = QueueType::LockSharedWait;
|
||||||
item->lockWait.id = m_id;
|
item->lockWait.id = m_id;
|
||||||
item->lockWait.thread = thread;
|
item->lockWait.thread = thread;
|
||||||
item->lockWait.time = Profiler::GetTime();
|
item->lockWait.time = Profiler::GetTime();
|
||||||
@ -225,7 +225,7 @@ public:
|
|||||||
auto& token = s_token.ptr;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockObtain;
|
item->hdr.type = QueueType::LockSharedObtain;
|
||||||
item->lockObtain.id = m_id;
|
item->lockObtain.id = m_id;
|
||||||
item->lockObtain.thread = thread;
|
item->lockObtain.thread = thread;
|
||||||
item->lockObtain.time = Profiler::GetTime();
|
item->lockObtain.time = Profiler::GetTime();
|
||||||
@ -241,7 +241,7 @@ public:
|
|||||||
auto& token = s_token.ptr;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockRelease;
|
item->hdr.type = QueueType::LockSharedRelease;
|
||||||
item->lockRelease.id = m_id;
|
item->lockRelease.id = m_id;
|
||||||
item->lockRelease.thread = GetThreadHandle();
|
item->lockRelease.thread = GetThreadHandle();
|
||||||
item->lockRelease.time = Profiler::GetTime();
|
item->lockRelease.time = Profiler::GetTime();
|
||||||
@ -257,7 +257,7 @@ public:
|
|||||||
auto& token = s_token.ptr;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockObtain;
|
item->hdr.type = QueueType::LockSharedObtain;
|
||||||
item->lockObtain.id = (uint64_t)&m_lockable;
|
item->lockObtain.id = (uint64_t)&m_lockable;
|
||||||
item->lockObtain.thread = GetThreadHandle();
|
item->lockObtain.thread = GetThreadHandle();
|
||||||
item->lockObtain.time = Profiler::GetTime();
|
item->lockObtain.time = Profiler::GetTime();
|
||||||
|
@ -20,6 +20,9 @@ enum class QueueType : uint8_t
|
|||||||
LockWait,
|
LockWait,
|
||||||
LockObtain,
|
LockObtain,
|
||||||
LockRelease,
|
LockRelease,
|
||||||
|
LockSharedWait,
|
||||||
|
LockSharedObtain,
|
||||||
|
LockSharedRelease,
|
||||||
LockMark,
|
LockMark,
|
||||||
PlotData,
|
PlotData,
|
||||||
MessageLiteral,
|
MessageLiteral,
|
||||||
@ -236,6 +239,9 @@ static const size_t QueueDataSize[] = {
|
|||||||
sizeof( QueueHeader ) + sizeof( QueueLockWait ),
|
sizeof( QueueHeader ) + sizeof( QueueLockWait ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueLockObtain ),
|
sizeof( QueueHeader ) + sizeof( QueueLockObtain ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueLockRelease ),
|
sizeof( QueueHeader ) + sizeof( QueueLockRelease ),
|
||||||
|
sizeof( QueueHeader ) + sizeof( QueueLockWait ),
|
||||||
|
sizeof( QueueHeader ) + sizeof( QueueLockObtain ),
|
||||||
|
sizeof( QueueHeader ) + sizeof( QueueLockRelease ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueLockMark ),
|
sizeof( QueueHeader ) + sizeof( QueueLockMark ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueuePlotData ),
|
sizeof( QueueHeader ) + sizeof( QueuePlotData ),
|
||||||
sizeof( QueueHeader ) + sizeof( QueueMessage ), // literal
|
sizeof( QueueHeader ) + sizeof( QueueMessage ), // literal
|
||||||
|
@ -602,6 +602,15 @@ void View::Process( const QueueItem& ev )
|
|||||||
case QueueType::LockRelease:
|
case QueueType::LockRelease:
|
||||||
ProcessLockRelease( ev.lockRelease );
|
ProcessLockRelease( ev.lockRelease );
|
||||||
break;
|
break;
|
||||||
|
case QueueType::LockSharedWait:
|
||||||
|
ProcessLockSharedWait( ev.lockWait );
|
||||||
|
break;
|
||||||
|
case QueueType::LockSharedObtain:
|
||||||
|
ProcessLockSharedObtain( ev.lockObtain );
|
||||||
|
break;
|
||||||
|
case QueueType::LockSharedRelease:
|
||||||
|
ProcessLockSharedRelease( ev.lockRelease );
|
||||||
|
break;
|
||||||
case QueueType::LockMark:
|
case QueueType::LockMark:
|
||||||
ProcessLockMark( ev.lockMark );
|
ProcessLockMark( ev.lockMark );
|
||||||
break;
|
break;
|
||||||
@ -780,6 +789,46 @@ void View::ProcessLockRelease( const QueueLockRelease& ev )
|
|||||||
InsertLockEvent( m_lockMap[ev.id], lev, ev.thread );
|
InsertLockEvent( m_lockMap[ev.id], lev, ev.thread );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void View::ProcessLockSharedWait( const QueueLockWait& ev )
|
||||||
|
{
|
||||||
|
auto lev = m_slab.Alloc<LockEvent>();
|
||||||
|
lev->time = ev.time * m_timerMul;
|
||||||
|
lev->type = (uint8_t)LockEvent::Type::Wait;
|
||||||
|
lev->srcloc = 0;
|
||||||
|
|
||||||
|
auto it = m_lockMap.find( ev.id );
|
||||||
|
if( it == m_lockMap.end() )
|
||||||
|
{
|
||||||
|
LockMap lm;
|
||||||
|
lm.valid = false;
|
||||||
|
it = m_lockMap.emplace( ev.id, std::move( lm ) ).first;
|
||||||
|
}
|
||||||
|
|
||||||
|
InsertLockEvent( it->second, lev, ev.thread );
|
||||||
|
}
|
||||||
|
|
||||||
|
void View::ProcessLockSharedObtain( const QueueLockObtain& ev )
|
||||||
|
{
|
||||||
|
auto lev = m_slab.Alloc<LockEvent>();
|
||||||
|
lev->time = ev.time * m_timerMul;
|
||||||
|
lev->type = (uint8_t)LockEvent::Type::Obtain;
|
||||||
|
lev->srcloc = 0;
|
||||||
|
|
||||||
|
assert( m_lockMap.find( ev.id ) != m_lockMap.end() );
|
||||||
|
InsertLockEvent( m_lockMap[ev.id], lev, ev.thread );
|
||||||
|
}
|
||||||
|
|
||||||
|
void View::ProcessLockSharedRelease( const QueueLockRelease& ev )
|
||||||
|
{
|
||||||
|
auto lev = m_slab.Alloc<LockEvent>();
|
||||||
|
lev->time = ev.time * m_timerMul;
|
||||||
|
lev->type = (uint8_t)LockEvent::Type::Release;
|
||||||
|
lev->srcloc = 0;
|
||||||
|
|
||||||
|
assert( m_lockMap.find( ev.id ) != m_lockMap.end() );
|
||||||
|
InsertLockEvent( m_lockMap[ev.id], lev, ev.thread );
|
||||||
|
}
|
||||||
|
|
||||||
void View::ProcessLockMark( const QueueLockMark& ev )
|
void View::ProcessLockMark( const QueueLockMark& ev )
|
||||||
{
|
{
|
||||||
CheckSourceLocation( ev.srcloc );
|
CheckSourceLocation( ev.srcloc );
|
||||||
|
@ -78,6 +78,9 @@ private:
|
|||||||
tracy_force_inline void ProcessLockWait( const QueueLockWait& ev );
|
tracy_force_inline void ProcessLockWait( const QueueLockWait& ev );
|
||||||
tracy_force_inline void ProcessLockObtain( const QueueLockObtain& ev );
|
tracy_force_inline void ProcessLockObtain( const QueueLockObtain& ev );
|
||||||
tracy_force_inline void ProcessLockRelease( const QueueLockRelease& ev );
|
tracy_force_inline void ProcessLockRelease( const QueueLockRelease& ev );
|
||||||
|
tracy_force_inline void ProcessLockSharedWait( const QueueLockWait& ev );
|
||||||
|
tracy_force_inline void ProcessLockSharedObtain( const QueueLockObtain& ev );
|
||||||
|
tracy_force_inline void ProcessLockSharedRelease( const QueueLockRelease& ev );
|
||||||
tracy_force_inline void ProcessLockMark( const QueueLockMark& ev );
|
tracy_force_inline void ProcessLockMark( const QueueLockMark& ev );
|
||||||
tracy_force_inline void ProcessPlotData( const QueuePlotData& ev );
|
tracy_force_inline void ProcessPlotData( const QueuePlotData& ev );
|
||||||
tracy_force_inline void ProcessMessage( const QueueMessage& ev );
|
tracy_force_inline void ProcessMessage( const QueueMessage& ev );
|
||||||
|
Loading…
Reference in New Issue
Block a user