#define TIMESTAMP_BUF_SIZE 0x1000
#define TRACES_PER_CHUNK (TIMESTAMP_BUF_SIZE / sizeof(uint64_t))
-bool _u_trace_instrument;
+int _u_trace_instrument;
#ifdef HAVE_PERFETTO
int ut_perfetto_enabled;
tracefile = stdout;
}
- _u_trace_instrument = tracefile || debug_get_option_trace_instrument();
+ if (tracefile || debug_get_option_trace_instrument())
+ p_atomic_inc(&_u_trace_instrument);
firsttime = false;
}
{
list_for_each_entry (struct u_trace_context, utctx, &ctx_list, node)
queue_init(utctx);
- ut_perfetto_enabled++;
+ if (p_atomic_inc_return(&ut_perfetto_enabled) == 1)
+ p_atomic_inc(&_u_trace_instrument);
}
void
u_trace_perfetto_stop(void)
{
assert(ut_perfetto_enabled > 0);
- ut_perfetto_enabled--;
+ if (p_atomic_dec_return(&ut_perfetto_enabled) == 0)
+ p_atomic_dec(&_u_trace_instrument);
}
#endif
#include <stdint.h>
#include <stdio.h>
+#include "util/u_atomic.h"
#include "util/u_queue.h"
#ifdef __cplusplus
static inline bool
u_trace_instrument(void)
{
- extern bool _u_trace_instrument;
- return _u_trace_instrument || ut_perfetto_enabled;
+ extern int _u_trace_instrument;
+ return p_atomic_read_relaxed(&_u_trace_instrument);
}
static inline bool