mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
Exit processing loops when trace has stopped.
This commit is contained in:
parent
52132b9a29
commit
c7afda2562
@ -431,6 +431,7 @@ void SysTraceSendExternalName( uint64_t thread )
|
|||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
# include <string.h>
|
# include <string.h>
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
|
# include <atomic>
|
||||||
|
|
||||||
# include "TracyProfiler.hpp"
|
# include "TracyProfiler.hpp"
|
||||||
|
|
||||||
@ -451,6 +452,8 @@ static const char SchedWakeup[] = "events/sched/sched_wakeup/enable";
|
|||||||
static const char BufferSizeKb[] = "buffer_size_kb";
|
static const char BufferSizeKb[] = "buffer_size_kb";
|
||||||
static const char TracePipe[] = "trace_pipe";
|
static const char TracePipe[] = "trace_pipe";
|
||||||
|
|
||||||
|
static std::atomic<bool> traceActive { false };
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
static bool TraceWrite( const char* path, size_t psz, const char* val, size_t vsz )
|
static bool TraceWrite( const char* path, size_t psz, const char* val, size_t vsz )
|
||||||
{
|
{
|
||||||
@ -546,6 +549,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if( !TraceWrite( TracingOn, sizeof( TracingOn ), "1", 2 ) ) return false;
|
if( !TraceWrite( TracingOn, sizeof( TracingOn ), "1", 2 ) ) return false;
|
||||||
|
traceActive.store( true, std::memory_order_relaxed );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -553,6 +557,7 @@ bool SysTraceStart( int64_t& samplingPeriod )
|
|||||||
void SysTraceStop()
|
void SysTraceStop()
|
||||||
{
|
{
|
||||||
TraceWrite( TracingOn, sizeof( TracingOn ), "0", 2 );
|
TraceWrite( TracingOn, sizeof( TracingOn ), "0", 2 );
|
||||||
|
traceActive.store( false, std::memory_order_relaxed );
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t ReadNumber( const char*& ptr )
|
static uint64_t ReadNumber( const char*& ptr )
|
||||||
@ -738,6 +743,8 @@ static void ProcessTraceLines( int fd )
|
|||||||
|
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
|
if( !traceActive.load( std::memory_order_relaxed ) ) break;
|
||||||
|
|
||||||
const auto rd = read( fd, line, 64*1024 );
|
const auto rd = read( fd, line, 64*1024 );
|
||||||
if( rd <= 0 ) break;
|
if( rd <= 0 ) break;
|
||||||
|
|
||||||
@ -836,7 +843,11 @@ static void ProcessTraceLines( int fd )
|
|||||||
|
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
while( poll( &pfd, 1, 0 ) <= 0 ) std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) );
|
while( poll( &pfd, 1, 0 ) <= 0 )
|
||||||
|
{
|
||||||
|
if( !traceActive.load( std::memory_order_relaxed ) ) break;
|
||||||
|
std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) );
|
||||||
|
}
|
||||||
|
|
||||||
const auto rd = read( fd, buf, 64*1024 );
|
const auto rd = read( fd, buf, 64*1024 );
|
||||||
if( rd <= 0 ) break;
|
if( rd <= 0 ) break;
|
||||||
|
Loading…
Reference in New Issue
Block a user