11#ifndef ENABLE_PERF_TRACE
12#error ENABLE_PERF_TRACE must be defined!
33static_assert(
sizeof(TraceEntry) == 8);
35#define TRACE_BUFFER_LENGTH (BIG_BUFFER_SIZE / sizeof(TraceEntry))
51 if constexpr (!ENABLE_PERF_TRACE) {
62 uint32_t timestamp = port_rt_get_counter_value();
72 uint32_t prim = __get_PRIMASK();
92 auto isr =
static_cast<int8_t
>(SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk);
93 entry.IsrId = isr - 16;
97 entry.ThreadId = chThdGetSelfX()->threadId;
103 entry.Timestamp = timestamp;
BigBufferHandle getBigBuffer(BigBufferUser user)
const TBuffer * get() const
constexpr remove_reference_t< _Ty > && move(_Ty &&_Arg) noexcept
void perfEventInstantGlobal(PE event)
static BigBufferHandle s_traceBuffer
const BigBufferHandle perfTraceGetBuffer()
void perfEventBegin(PE event)
static void perfEventImpl(PE event, EPhase phase)
void perfEventEnd(PE event)
void DisableToothLogger()
bool IsToothLoggerEnabled()