Percepio Trace Recorder v4.8.0.hotfix1
Loading...
Searching...
No Matches
trcStackMonitor.h
Go to the documentation of this file.
1/*
2* Percepio Trace Recorder SDK for Tracealyzer v4.8.0.hotfix1
3* Copyright 2023 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
26extern "C" {
27#endif
28
35#if (((TRC_CFG_ENABLE_STACK_MONITOR) == 1) && ((TRC_CFG_SCHEDULING_ONLY) == 0))
36
37typedef struct TraceStackMonitorEntry /* Aligned */
38{
39 void *pvTask;
40 TraceUnsignedBaseType_t uxPreviousLowWaterMark;
41} TraceStackMonitorEntry_t;
42
43typedef struct TraceStackMonitorData /* Aligned */
44{
45 TraceStackMonitorEntry_t xEntries[TRC_CFG_STACK_MONITOR_MAX_TASKS];
46
47 TraceUnsignedBaseType_t uxEntryCount;
48} TraceStackMonitorData_t;
49
59traceResult xTraceStackMonitorInitialize(TraceStackMonitorData_t* pxBuffer);
60
69traceResult xTraceStackMonitorAdd(void* pvTask);
70
79traceResult xTraceStackMonitorRemove(void* pvTask);
80
91traceResult xTraceStackMonitorGetAtIndex(uint32_t uiIndex, void** ppvTask, TraceUnsignedBaseType_t* puxLowWaterMark);
92
103traceResult xTraceStackMonitorReport(void);
104
105#else
106
107typedef struct TraceStackMonitorData
108{
109 uint32_t buffer[1];
110} TraceStackMonitorData_t;
111
112#define xTraceStackMonitorInitialize(pxBuffer) ((void)(pxBuffer), TRC_SUCCESS)
113
114#define xTraceStackMonitorDiagnosticsGet(xType, puiValue) ((void)(xType), (puiValue) != 0 ? *(puiValue) = 0 : 0, (puiValue) != 0 ? TRC_SUCCESS : TRC_FAIL)
115
116#define xTraceStackMonitorDiagnosticsSet(xType, uiValue) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(xType), (void)(uiValue), TRC_SUCCESS)
117
118#define xTraceStackMonitorAdd(pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(pvTask), TRC_SUCCESS)
119
120#define xTraceStackMonitorRemove(pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(pvTask), TRC_SUCCESS)
121
122#define xTraceStackMonitorGetAtIndex(uiIndex, ppvTask, puxLowWaterMark) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(uiIndex), (void)(ppvTask), (void)(puxLowWaterMark), TRC_SUCCESS)
123
124#define xTraceStackMonitorReport() TRC_COMMA_EXPR_TO_STATEMENT_EXPR_1(TRC_SUCCESS)
125
126#endif
127
130#ifdef __cplusplus
131}
132#endif
133
134#endif
135
136#endif
137
138#endif
traceResult xTraceStackMonitorGetAtIndex(uint32_t uiIndex, void **ppvTask, TraceUnsignedBaseType_t *puxLowWaterMark)
Gets trace stack monitor tread/task at index.
Definition: trcStackMonitor.c:136
traceResult xTraceStackMonitorAdd(void *pvTask)
Adds task/thread to trace stack monitor.
Definition: trcStackMonitor.c:46
traceResult xTraceStackMonitorRemove(void *pvTask)
Removes task/thread from trace stack monitor.
Definition: trcStackMonitor.c:85
traceResult xTraceStackMonitorReport(void)
Performs trace stack monitor reporting.
Definition: trcStackMonitor.c:156
The public API of the Percepio trace recorder.