#pragma once #define TRACE_DUMP_WHEN_FULL 0 #ifdef __x86_64__ #include #define TRACE(x) printf(#x "\n") #else // __x86_64__ #define TRACE(...) tracing::trace(__VA_ARGS__) #endif // __x86_64__ #include namespace tracing { enum class TraceEvent : uint8_t { kUnknown = 0, kUartIsr = 1, kUartRxCb = 2, kUartTxCb = 3, kUartSend = 10, kUartRecv = 11, kUartTxBufferFull = 12, kUartTxBufferNotFull = 13, kUartWriteDone = 20, kAsyncResume = 4, kAsyncEnqueue = 5, kAsyncTask = 6, kAsyncResumeSetPending = 7, kAsyncAwaitWasNotified = 8, kAsyncSchedule = 9, kAsyncTaskDone = 14, kAsyncException = 15, kAsyncCallParent = 16, kAsyncCallParentDone = 17, kAsyncCoAwait = 18, kAsyncSuspend = 19, kAsyncDestroy = 21, kAsyncGimmeWaiting = 22, kAsyncGimmeResume = 23, }; void trace(TraceEvent event); void trace(int raw_event); void dump(); } // namespace tracing