3#include <guanaqo/trace.hpp>
6#if GUANAQO_WITH_TRACING
12namespace fs = std::filesystem;
14struct TracingOptions {
15 bool no_barrier =
true;
18void write_chrome_trace(
const fs::path &filename, std::span<const guanaqo::TraceLogger::Log> logs,
19 const TracingOptions &opts = {});
21enum class TraceDataNames {
35inline uint32_t tracing_data_ids[
static_cast<size_t>(TraceDataNames::Sentinel)][256][8]{};
39#define CYQ_TRACE_WRITE(name, index, lr) \
41 using ::cyqlone::TraceDataNames; \
42 uint64_t id = ++tracing_data_ids[static_cast<size_t>(TraceDataNames::name)][index][lr]; \
43 id += static_cast<uint64_t>(TraceDataNames::name) << 32; \
44 id += static_cast<uint64_t>(index) << 48; \
45 id += static_cast<uint64_t>(lr) << 56; \
46 auto s = ::guanaqo::get_trace_logger().trace("w:" #name, id); \
49#define CYQ_TRACE_READ(name, index, lr) \
51 using ::cyqlone::TraceDataNames; \
52 uint64_t id = tracing_data_ids[static_cast<size_t>(TraceDataNames::name)][index][lr]; \
53 id += static_cast<uint64_t>(TraceDataNames::name) << 32; \
54 id += static_cast<uint64_t>(index) << 48; \
55 id += static_cast<uint64_t>(lr) << 56; \
56 auto s = ::guanaqo::get_trace_logger().trace("r:" #name, id); \
62#define CYQ_TRACE_WRITE(...) GUANAQO_NOOP()
63#define CYQ_TRACE_READ(...) GUANAQO_NOOP()