15#ifndef TRC_TASK_MONITOR_H
16#define TRC_TASK_MONITOR_H
18#ifndef TRC_CFG_ENABLE_TASK_MONITOR
19#define TRC_CFG_ENABLE_TASK_MONITOR 0
22#ifndef TRC_KERNEL_PORT_SUPPORTS_TLS
23#define TRC_KERNEL_PORT_SUPPORTS_TLS 0
26typedef struct TraceTaskMonitorCallbackData
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;
36typedef void (*TraceTaskMonitorCallback_t)(TraceTaskMonitorCallbackData_t *pxData);
38#if (TRC_USE_TRACEALYZER_RECORDER == 1) && (TRC_CFG_ENABLE_TASK_MONITOR == 1) && (TRC_KERNEL_PORT_SUPPORTS_TLS == 1)
55typedef struct TraceTaskMonitorTaskData
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;
68typedef struct TraceTaskMonitorData
70 uint32_t uiPollTimestamp;
71 uint32_t uiLastTimestamp[TRC_ALIGN_FLOOR(TRC_CFG_CORE_COUNT, 2) + 1];
72 TraceTaskMonitorCallback_t xCallback;
73 TraceTaskMonitorTaskData_t xMonitoredTasks[TRC_CFG_TASK_MONITOR_MAX_TASKS];
74 TraceTaskMonitorCallbackData_t xCallbackData;
75} TraceTaskMonitorData_t;
86traceResult xTraceTaskMonitorInitialize(TraceTaskMonitorData_t* pxBuffer);
105traceResult xTraceTaskMonitorSetCallback(TraceTaskMonitorCallback_t xCallback);
117traceResult xTraceTaskMonitorRegister(
void* pvTask, TraceUnsignedBaseType_t uxLow, TraceUnsignedBaseType_t uxHigh);
127traceResult xTraceTaskMonitorUnregister(
void* pvTask);
137traceResult xTraceTaskMonitorGetEmptySlot(TraceTaskMonitorTaskData_t** ppxData);
147traceResult xTraceTaskMonitorSwitchOut(
void* pvTask);
156traceResult xTraceTaskMonitorPoll(
void);
165traceResult xTraceTaskMonitorPollReset(
void);
172traceResult xTraceTaskMonitorPrint(
void);
182typedef struct TraceTaskMonitorData
184 TraceUnsignedBaseType_t dummy;
185} TraceTaskMonitorData_t;
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)