Percepio Trace Recorder v4.11.0
Loading...
Searching...
No Matches
trcTaskMonitor.h
Go to the documentation of this file.
1/*
2* Percepio Trace Recorder for Tracealyzer v4.11.0
3* Copyright 2025 Percepio AB
4* www.percepio.com
5*
6* SPDX-License-Identifier: Apache-2.0
7*/
8
14
15#ifndef TRC_TASK_MONITOR_H
16#define TRC_TASK_MONITOR_H
17
18#ifndef TRC_CFG_ENABLE_TASK_MONITOR
19#define TRC_CFG_ENABLE_TASK_MONITOR 0
20#endif
21
22#ifndef TRC_KERNEL_PORT_SUPPORTS_TLS
23#define TRC_KERNEL_PORT_SUPPORTS_TLS 0
24#endif
25
26typedef struct TraceTaskMonitorCallbackData
27{
28 void* pvTaskAddress;
29 char acName[TRC_ENTRY_TABLE_SLOT_SYMBOL_SIZE];
30 TraceUnsignedBaseType_t uxCPULoad;
31 TraceUnsignedBaseType_t uxLowLimit;
32 TraceUnsignedBaseType_t uxHighLimit;
33 TraceUnsignedBaseType_t uxNumberOfFailedTasks;
34} TraceTaskMonitorCallbackData_t;
35
36typedef void (*TraceTaskMonitorCallback_t)(TraceTaskMonitorCallbackData_t *pxData);
37
38#if (TRC_USE_TRACEALYZER_RECORDER == 1) && (TRC_CFG_ENABLE_TASK_MONITOR == 1) && (TRC_KERNEL_PORT_SUPPORTS_TLS == 1)
39
40#include <trcTypes.h>
41
42#ifdef __cplusplus
43extern "C" {
44#endif
45
51
55typedef struct TraceTaskMonitorTaskData
56{
57 TraceTaskHandle_t xTaskHandle;
58 TraceUnsignedBaseType_t uxTotal;
59 TraceUnsignedBaseType_t uxLow;
60 TraceUnsignedBaseType_t uxHigh;
61 TraceUnsignedBaseType_t uxWatermarkLow;
62 TraceUnsignedBaseType_t uxWatermarkHigh;
63} TraceTaskMonitorTaskData_t;
64
68typedef struct TraceTaskMonitorData /* Aligned */
69{
70 uint32_t uiPollTimestamp;
71 uint32_t uiLastTimestamp[TRC_ALIGN_FLOOR(TRC_CFG_CORE_COUNT, 2) + 1]; /* Will FLOOR the core count to a multiple of 2, then add 1 to ensure aligned struct with uiPollTimestamp */
72 TraceTaskMonitorCallback_t xCallback;
73 TraceTaskMonitorTaskData_t xMonitoredTasks[TRC_CFG_TASK_MONITOR_MAX_TASKS];
74 TraceTaskMonitorCallbackData_t xCallbackData; /* Data that will be used for callback */
75} TraceTaskMonitorData_t;
76
86traceResult xTraceTaskMonitorInitialize(TraceTaskMonitorData_t* pxBuffer);
87
105traceResult xTraceTaskMonitorSetCallback(TraceTaskMonitorCallback_t xCallback);
106
117traceResult xTraceTaskMonitorRegister(void* pvTask, TraceUnsignedBaseType_t uxLow, TraceUnsignedBaseType_t uxHigh);
118
127traceResult xTraceTaskMonitorUnregister(void* pvTask);
128
137traceResult xTraceTaskMonitorGetEmptySlot(TraceTaskMonitorTaskData_t** ppxData);
138
147traceResult xTraceTaskMonitorSwitchOut(void* pvTask);
148
156traceResult xTraceTaskMonitorPoll(void);
157
165traceResult xTraceTaskMonitorPollReset(void);
166
172traceResult xTraceTaskMonitorPrint(void);
173
175
176#ifdef __cplusplus
177}
178#endif
179
180#else
181
182typedef struct TraceTaskMonitorData /* Aligned */
183{
184 TraceUnsignedBaseType_t dummy;
185} TraceTaskMonitorData_t;
186
187/* Empty defines */
188#define xTraceTaskMonitorInitialize(_pxBuffer) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(_pxBuffer), TRC_SUCCESS)
189#define xTraceTaskMonitorSetCallback(_xCallback) (TRC_FAIL)
190#define xTraceTaskMonitorRegister(_pvTask, _uxLow, _uxHigh) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_pvTask), (void)(_uxLow), (void)(_uxHigh), TRC_FAIL)
191#define xTraceTaskMonitorUnregister(_pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(_pvTask), TRC_FAIL)
192#define xTraceTaskMonitorGetData(_pvTask, _ppxData) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_pvTask), (void)(_ppxData), TRC_FAIL)
193#define xTraceTaskMonitorSwitchOut(_pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(_pvTask), TRC_FAIL)
194#define xTraceTaskMonitorPoll() (TRC_FAIL)
195#define xTraceTaskMonitorPrint() (TRC_FAIL)
196
197#endif
198
199#endif