Percepio Trace Recorder  v4.6.6
trcStackMonitor.h
Go to the documentation of this file.
1 /*
2 * Percepio Trace Recorder SDK for Tracealyzer v4.6.6
3 * Copyright 2021 Percepio AB
4 * www.percepio.com
5 *
6 * SPDX-License-Identifier: Apache-2.0
7 */
8 
15 #ifndef TRC_STACK_MONITOR_H
16 #define TRC_STACK_MONITOR_H
17 
18 #if (TRC_USE_TRACEALYZER_RECORDER == 1)
19 
20 #if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
21 
22 #include <stdint.h>
23 #include <trcRecorder.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
35 #if (((TRC_CFG_ENABLE_STACK_MONITOR) == 1) && ((TRC_CFG_SCHEDULING_ONLY) == 0))
36 
37 #define TRACE_STACK_MONITOR_BUFFER_SIZE ((sizeof(void*) + sizeof(TraceUnsignedBaseType_t)) * (TRC_CFG_STACK_MONITOR_MAX_TASKS) + sizeof(uint32_t))
38 
42 typedef struct TraceStackMonitorBuffer
43 {
44  uint32_t buffer[(TRACE_STACK_MONITOR_BUFFER_SIZE) / sizeof(uint32_t)];
45 } TraceStackMonitorBuffer_t;
46 
56 traceResult xTraceStackMonitorInitialize(TraceStackMonitorBuffer_t* pxBuffer);
57 
66 traceResult xTraceStackMonitorAdd(void* pvTask);
67 
76 traceResult xTraceStackMonitorRemove(void* pvTask);
77 
88 traceResult xTraceStackMonitorGetAtIndex(uint32_t uiIndex, void** ppvTask, TraceUnsignedBaseType_t* puxLowWaterMark);
89 
100 traceResult xTraceStackMonitorReport(void);
101 
102 #else /* (((TRC_CFG_ENABLE_STACK_MONITOR) == 1) && ((TRC_CFG_SCHEDULING_ONLY) == 0)) */
103 
104 typedef struct TraceStackMonitorBuffer
105 {
106  uint32_t buffer[1];
107 } TraceStackMonitorBuffer_t;
108 
109 #define xTraceStackMonitorInitialize(pxBuffer) ((void)pxBuffer, TRC_SUCCESS)
110 
111 #define xTraceStackMonitorDiagnosticsGet(xType, puiValue) ((void)xType, puiValue != 0 ? *puiValue = 0 : 0, puiValue != 0 ? TRC_SUCCESS : TRC_FAIL)
112 
113 #define xTraceStackMonitorDiagnosticsSet(xType, uiValue) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)xType, (void)uiValue, TRC_SUCCESS)
114 
115 #define xTraceStackMonitorAdd(pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)pvTask, TRC_SUCCESS)
116 
117 #define xTraceStackMonitorRemove(pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)pvTask, TRC_SUCCESS)
118 
119 #define xTraceStackMonitorGetAtIndex(uiIndex, ppvTask, puxLowWaterMark) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)uiIndex, (void)ppvTask, (void)puxLowWaterMark, TRC_SUCCESS)
120 
121 #define xTraceStackMonitorReport() TRC_COMMA_EXPR_TO_STATEMENT_EXPR_1(TRC_SUCCESS)
122 
123 #endif /* (((TRC_CFG_ENABLE_STACK_MONITOR) == 1) && ((TRC_CFG_SCHEDULING_ONLY) == 0)) */
124 
127 #ifdef __cplusplus
128 }
129 #endif
130 
131 #endif /* (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING) */
132 
133 #endif /* (TRC_USE_TRACEALYZER_RECORDER == 1) */
134 
135 #endif /* TRC_STACK_MONITOR_H */
trcRecorder.h
The public API of the Percepio trace recorder.
xTraceStackMonitorRemove
traceResult xTraceStackMonitorRemove(void *pvTask)
Removes task/thread from trace stack monitor.
Definition: trcStackMonitor.c:96
xTraceStackMonitorAdd
traceResult xTraceStackMonitorAdd(void *pvTask)
Adds task/thread to trace stack monitor.
Definition: trcStackMonitor.c:57
xTraceStackMonitorReport
traceResult xTraceStackMonitorReport(void)
Performs trace stack monitor reporting.
Definition: trcStackMonitor.c:167
xTraceStackMonitorGetAtIndex
traceResult xTraceStackMonitorGetAtIndex(uint32_t uiIndex, void **ppvTask, TraceUnsignedBaseType_t *puxLowWaterMark)
Gets trace stack monitor tread/task at index.
Definition: trcStackMonitor.c:147