From fe0f1aea07d886555956f8b906d672fd49266f00 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Mon, 12 Aug 2019 20:08:15 +0200 Subject: [PATCH] Add system tracing skeleton. --- TracyClient.cpp | 1 + client/TracyProfiler.cpp | 23 +++++++++++++++++++++++ client/TracyProfiler.hpp | 1 + client/TracySysTrace.cpp | 23 +++++++++++++++++++++++ client/TracySysTrace.hpp | 21 +++++++++++++++++++++ 5 files changed, 69 insertions(+) create mode 100644 client/TracySysTrace.cpp create mode 100644 client/TracySysTrace.hpp diff --git a/TracyClient.cpp b/TracyClient.cpp index ec70ed6d..c5eab179 100644 --- a/TracyClient.cpp +++ b/TracyClient.cpp @@ -19,6 +19,7 @@ #include "client/TracyProfiler.cpp" #include "client/TracyCallstack.cpp" #include "client/TracySysTime.cpp" +#include "client/TracySysTrace.cpp" #include "common/TracySocket.cpp" #include "client/tracy_rpmalloc.cpp" #include "client/TracyDxt1.cpp" diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index e48b1400..b22d1c92 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -931,6 +931,10 @@ static Profiler* s_instance; static Thread* s_thread; static Thread* s_compressThread; +#ifdef TRACY_HAS_SYSTEM_TRACING +static Thread* s_sysTraceThread = nullptr; +#endif + #ifdef TRACY_DELAYED_INIT struct ThreadNameData; TRACY_API moodycamel::ConcurrentQueue& GetQueue(); @@ -1138,6 +1142,15 @@ Profiler::Profiler() new(s_compressThread) Thread( LaunchCompressWorker, this ); SetThreadName( s_compressThread->Handle(), "Tracy Profiler DXT1" ); +#ifdef TRACY_HAS_SYSTEM_TRACING + if( SysTraceStart() ) + { + s_sysTraceThread = (Thread*)tracy_malloc( sizeof( Thread ) ); + new(s_sysTraceThread) Thread( SysTraceWorker, nullptr ); + SetThreadName( s_sysTraceThread->Handle(), "Tracy Profiler system trace" ); + } +#endif + #if defined PTW32_VERSION s_profilerThreadId = pthread_getw32threadid_np( s_thread->Handle() ); #elif defined __WINPTHREADS_VERSION @@ -1174,6 +1187,16 @@ Profiler::Profiler() Profiler::~Profiler() { m_shutdown.store( true, std::memory_order_relaxed ); + +#ifdef TRACY_HAS_SYSTEM_TRACING + if( s_sysTraceThread ) + { + SysTraceStop(); + s_sysTraceThread->~Thread(); + tracy_free( s_sysTraceThread ); + } +#endif + s_compressThread->~Thread(); tracy_free( s_compressThread ); s_thread->~Thread(); diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index 314a8fa9..6d80a0b9 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -10,6 +10,7 @@ #include "tracy_concurrentqueue.h" #include "TracyCallstack.hpp" #include "TracySysTime.hpp" +#include "TracySysTrace.hpp" #include "TracyFastVector.hpp" #include "../common/TracyQueue.hpp" #include "../common/TracyAlign.hpp" diff --git a/client/TracySysTrace.cpp b/client/TracySysTrace.cpp new file mode 100644 index 00000000..c18c1042 --- /dev/null +++ b/client/TracySysTrace.cpp @@ -0,0 +1,23 @@ +#include "TracySysTrace.hpp" + +#ifdef TRACY_HAS_SYSTEM_TRACING + +namespace tracy +{ + +bool SysTraceStart() +{ + return true; +} + +void SysTraceStop() +{ +} + +void SysTraceWorker( void* ptr ) +{ +} + +} + +#endif diff --git a/client/TracySysTrace.hpp b/client/TracySysTrace.hpp new file mode 100644 index 00000000..6f819b12 --- /dev/null +++ b/client/TracySysTrace.hpp @@ -0,0 +1,21 @@ +#ifndef __TRACYSYSTRACE_HPP__ +#define __TRACYSYSTRACE_HPP__ + +#if defined _WIN32 || defined __CYGWIN__ +# define TRACY_HAS_SYSTEM_TRACING +#endif + +#ifdef TRACY_HAS_SYSTEM_TRACING + +namespace tracy +{ + +bool SysTraceStart(); +void SysTraceStop(); +void SysTraceWorker( void* ptr ); + +} + +#endif + +#endif