Perf trace maybe fix - "We were trying to trace before the os was awake"
This commit is contained in:
parent
4faca85fdd
commit
4b4678074b
|
@ -26,19 +26,23 @@ struct TraceEntry
|
||||||
uint32_t Timestamp;
|
uint32_t Timestamp;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Ensure that the struct is the size we think it is - the binary layout is important
|
||||||
static_assert(sizeof(TraceEntry) == 8);
|
static_assert(sizeof(TraceEntry) == 8);
|
||||||
|
|
||||||
|
// This buffer stores a trace - we write the full buffer once, then disable tracing
|
||||||
static TraceEntry s_traceBuffer[TRACE_BUFFER_LENGTH];
|
static TraceEntry s_traceBuffer[TRACE_BUFFER_LENGTH];
|
||||||
static size_t s_nextIdx = 0;
|
static size_t s_nextIdx = 0;
|
||||||
|
|
||||||
static bool s_isTracing = true;
|
static bool s_isTracing = false;
|
||||||
|
|
||||||
void perfEventImpl(PE event, EPhase phase, uint8_t data)
|
void perfEventImpl(PE event, EPhase phase, uint8_t data)
|
||||||
{
|
{
|
||||||
|
// Bail if we aren't allowed to trace
|
||||||
if constexpr (!ENABLE_PERF_TRACE) {
|
if constexpr (!ENABLE_PERF_TRACE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bail if we aren't tracing
|
||||||
if (!s_isTracing) {
|
if (!s_isTracing) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -67,6 +71,7 @@ void perfEventImpl(PE event, EPhase phase, uint8_t data)
|
||||||
|
|
||||||
entry.Event = event;
|
entry.Event = event;
|
||||||
entry.Phase = phase;
|
entry.Phase = phase;
|
||||||
|
// Get the current active interrupt - this is the "thread ID"
|
||||||
entry.ThreadId = static_cast<uint8_t>(SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk);
|
entry.ThreadId = static_cast<uint8_t>(SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk);
|
||||||
entry.Timestamp = timestamp;
|
entry.Timestamp = timestamp;
|
||||||
entry.Data = data;
|
entry.Data = data;
|
||||||
|
|
Loading…
Reference in New Issue