trcStaticBuffer.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Percepio Trace Recorder for Tracealyzer v4.9.2
  3. * Copyright 2023 Percepio AB
  4. * www.percepio.com
  5. *
  6. * SPDX-License-Identifier: Apache-2.0
  7. *
  8. * The implementation for the static buffer.
  9. */
  10. #include <trcRecorder.h>
  11. #if (TRC_USE_TRACEALYZER_RECORDER == 1) && (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
  12. TraceStaticBufferTable_t *pxTraceStaticBufferTable TRC_CFG_RECORDER_DATA_ATTRIBUTE;
  13. traceResult xTraceStaticBufferInitialize(TraceStaticBufferTable_t *pxBuffer)
  14. {
  15. /* This should never fail */
  16. TRC_ASSERT(pxBuffer != (void*)0);
  17. pxTraceStaticBufferTable = pxBuffer;
  18. xTraceSetComponentInitialized(TRC_RECORDER_COMPONENT_STATIC_BUFFER);
  19. return TRC_SUCCESS;
  20. }
  21. #if ((TRC_CFG_USE_TRACE_ASSERT) == 1)
  22. /* Returns a pointer to a maximum sized static buffer */
  23. traceResult xTraceStaticBufferGet(void **ppvBuffer)
  24. {
  25. int32_t ISR_nesting;
  26. /* This should never fail */
  27. TRC_ASSERT(xTraceIsComponentInitialized(TRC_RECORDER_COMPONENT_STATIC_BUFFER));
  28. TRC_ASSERT(ppvBuffer != (void*)0);
  29. TRC_ASSERT(xTraceISRGetCurrentNesting(&ISR_nesting) == TRC_SUCCESS);
  30. /* Task dummy events begin at 0, ISR dummy events begin at index 1 */
  31. *ppvBuffer = (void*)&pxTraceStaticBufferTable->coreDummyEvents[TRC_CFG_GET_CURRENT_CORE()].dummyEvents[ISR_nesting + 1];
  32. return TRC_SUCCESS;
  33. }
  34. #endif
  35. #endif