aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/trace.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-09-22 03:47:31 -0400
committerGitHub <[email protected]>2023-09-22 09:47:31 +0200
commit34132b6d936ea4077f8c96d84a00c74496332a4f (patch)
tree865131960ed43e2e9a0db5d2eb80144a204b4969 /src/zencore/trace.cpp
parentImprovement: Add names to background jobs for easier debugging (#412) (diff)
downloadzen-34132b6d936ea4077f8c96d84a00c74496332a4f.tar.xz
zen-34132b6d936ea4077f8c96d84a00c74496332a4f.zip
add trace command to enable/disable tracing at runtime (#416)
* add trace command to enable/disable tracing at runtime * rework tracing init/start/stop * changelog
Diffstat (limited to 'src/zencore/trace.cpp')
-rw-r--r--src/zencore/trace.cpp74
1 files changed, 49 insertions, 25 deletions
diff --git a/src/zencore/trace.cpp b/src/zencore/trace.cpp
index 6da5d28d6..d71ca0984 100644
--- a/src/zencore/trace.cpp
+++ b/src/zencore/trace.cpp
@@ -9,10 +9,48 @@
# include <zencore/trace.h>
void
-TraceInit(const char* HostOrPath, TraceType Type)
+TraceInit()
{
- bool EnableEvents = true;
+ static std::atomic_bool gInited = false;
+ bool Expected = false;
+ if (!gInited.compare_exchange_strong(Expected, true))
+ {
+ return;
+ }
+
+ trace::FInitializeDesc Desc = {
+ .bUseImportantCache = true,
+ };
+ trace::Initialize(Desc);
+ trace::ThreadRegister("main", /* system id */ 0, /* sort id */ 0);
+ trace::DescribeSession("zenserver",
+# if ZEN_BUILD_DEBUG
+ trace::Build::Debug,
+# else
+ trace::Build::Development,
+# endif
+ "",
+ ZEN_CFG_VERSION_BUILD_STRING);
+}
+
+void
+TraceShutdown()
+{
+ (void)TraceStop();
+ trace::Shutdown();
+}
+
+bool
+IsTracing()
+{
+ return trace::IsTracing();
+}
+
+void
+TraceStart(const char* HostOrPath, TraceType Type)
+{
+ TraceInit();
switch (Type)
{
case TraceType::Network:
@@ -24,34 +62,20 @@ TraceInit(const char* HostOrPath, TraceType Type)
break;
case TraceType::None:
- EnableEvents = false;
break;
}
-
- trace::FInitializeDesc Desc = {
- .bUseImportantCache = false,
- };
- trace::Initialize(Desc);
-
- if (EnableEvents)
- {
- trace::ToggleChannel("cpu", true);
- trace::ThreadRegister("main", /* system id */ 0, /* sort id */ 0);
- trace::DescribeSession("zenserver",
-# if ZEN_BUILD_DEBUG
- trace::Build::Debug,
-# else
- trace::Build::Development,
-# endif
- "",
- ZEN_CFG_VERSION_BUILD_STRING);
- }
+ trace::ToggleChannel("cpu", true);
}
-void
-TraceShutdown()
+bool
+TraceStop()
{
- trace::Shutdown();
+ trace::ToggleChannel("cpu", false);
+ if (trace::Stop())
+ {
+ return true;
+ }
+ return false;
}
#endif // ZEN_WITH_TRACE