Percepio Trace Recorder v4.11.0
Loading...
Searching...
No Matches
trcTask.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_H
16#define TRC_TASK_H
17
18#if (TRC_USE_TRACEALYZER_RECORDER == 1)
19
20#include <trcTypes.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
31
32#ifndef TRC_CFG_ENABLE_STACK_MONITOR
33#define TRC_CFG_ENABLE_STACK_MONITOR 0
34#endif
35
39typedef struct TraceTaskData /* Aligned */
40{
41 void* coreTasks[TRC_CFG_CORE_COUNT];
42} TraceTaskData_t;
43
44extern TraceTaskData_t* pxTraceTaskData;
45
55traceResult xTraceTaskInitialize(TraceTaskData_t* pxBuffer);
56
68#define xTraceTaskRegister(pvTask, szName, uxPriority, pxTaskHandle) ((((pvTask) != 0) && (xTraceObjectRegister(PSF_EVENT_TASK_CREATE, pvTask, szName, uxPriority, (TraceObjectHandle_t*)(pxTaskHandle)) == TRC_SUCCESS)) ? ((void)xTraceStackMonitorAdd(pvTask), TRC_SUCCESS) : TRC_FAIL)
69
79#define xTraceTaskUnregister(xTaskHandle, uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)xTraceStackMonitorRemove(pvTraceEntryGetAddressReturn((TraceEntryHandle_t)(xTaskHandle))), (void)xTraceTaskMonitorUnregister(pvTraceEntryGetAddressReturn((TraceEntryHandle_t)(xTaskHandle))), xTraceObjectUnregister((TraceObjectHandle_t)(xTaskHandle), PSF_EVENT_TASK_DELETE, uxPriority))
80
90#define xTraceTaskSetName xTraceObjectSetName
91
101#define xTraceTaskGetName xTraceObjectGetName
102
112traceResult xTraceTaskSetPriority(TraceTaskHandle_t xTaskHandle, TraceUnsignedBaseType_t uxPriority);
113
124#define xTraceTaskRegisterWithoutHandle(pvTask, szName, uxPriority) ((((pvTask) != 0) && (xTraceObjectRegisterWithoutHandle(PSF_EVENT_TASK_CREATE, pvTask, szName, uxPriority) == TRC_SUCCESS)) ? ((void)xTraceStackMonitorAdd(pvTask), TRC_SUCCESS) : TRC_FAIL)
125
135#define xTraceTaskUnregisterWithoutHandle(pvTask, uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)xTraceStackMonitorRemove(pvTask), xTraceObjectUnregisterWithoutHandle(PSF_EVENT_TASK_DELETE, pvTask, uxPriority))
136
146#define xTraceTaskSetNameWithoutHandle xTraceObjectSetNameWithoutHandle
147
157traceResult xTraceTaskSetPriorityWithoutHandle(void* pvTask, TraceUnsignedBaseType_t uxPriority);
158
168traceResult xTraceTaskSwitch(void* pvTask, TraceUnsignedBaseType_t uxPriority);
169
170#if (TRC_CFG_INCLUDE_READY_EVENTS == 1)
179#define xTraceTaskReady(pvTask) xTraceEventCreate1(PSF_EVENT_TASK_READY, (TraceUnsignedBaseType_t)(pvTask))
180#else
181#define xTraceTaskReady(p) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)p, TRC_SUCCESS)
182#endif
183
193#define xTraceTaskSetCurrentOnCore(coreId, pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(pxTraceTaskData->coreTasks[coreId] = (pvTask), TRC_SUCCESS)
194
203#define xTraceTaskSetCurrent(pvTask) xTraceTaskSetCurrentOnCore(TRC_CFG_GET_CURRENT_CORE(), pvTask)
204
214#define xTraceTaskGetCurrentOnCore(coreId, ppvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(ppvTask) = pxTraceTaskData->coreTasks[coreId], TRC_SUCCESS)
215
224#define xTraceTaskGetCurrent(ppvTask) xTraceTaskGetCurrentOnCore(TRC_CFG_GET_CURRENT_CORE(), ppvTask)
225
234#define xTraceTaskGetCurrentOnCoreReturn(coreId) (pxTraceTaskData->coreTasks[coreId])
235
241#define xTraceTaskGetCurrentReturn() xTraceTaskGetCurrentOnCoreReturn(TRC_CFG_GET_CURRENT_CORE())
242
254#define xTraceTaskInstanceFinishedNow() xTraceEventCreate0(PSF_EVENT_IFE_DIRECT)
255
269#define xTraceTaskInstanceFinishedNext() xTraceEventCreate0(PSF_EVENT_IFE_NEXT)
270
280#define xTraceTaskFind(pvTask, pxTaskHandle) xTraceObjectFind(pvTask, (TraceObjectHandle_t*)pxTaskHandle)
281
291#define xTraceTaskGetAddress(xTaskHandle, ppvTask) xTraceObjectGetAddress((TraceObjectHandle_t)xTaskHandle, ppvTask)
292
301#define pvTraceTaskGetAddressReturn(xTaskHandle) pvTraceObjectGetAddressReturn((TraceObjectHandle_t)xTaskHandle)
302
304
305#ifdef __cplusplus
306}
307#endif
308
309#else
310
311#define xTraceTaskRegister(__pvTask, ___szName, __uxPriority, __pxTaskHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_5((void)(__pvTask), (void)(__szName), (void)(__uxPriority), (void)(__pxTaskHandle), TRC_SUCCESS)
312
313#define xTraceTaskUnregister(__xTaskHandle, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__xTaskHandle), (void)(__uxPriority), TRC_SUCCESS)
314
315#define xTraceTaskSetName(__xTaskHandle, __szName) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__xTaskHandle), (void)(__szName), TRC_SUCCESS)
316
317#define xTraceTaskSetPriority(__xTaskHandle, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__xTaskHandle), (void)(__uxPriority), TRC_SUCCESS)
318
319#define xTraceTaskRegisterWithoutHandle(__pvTask, __szName, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(__pvTask), (void)(__szName), (void)(__uxPriority), TRC_SUCCESS)
320
321#define xTraceTaskUnregisterWithoutHandle(__pvTask, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__pvTask), (void)(__uxPriority), TRC_SUCCESS)
322
323#define xTraceTaskSetNameWithoutHandle(__pvTask, __szName) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__pvTask), (void)(__szName), TRC_SUCCESS)
324
325#define xTraceTaskSetPriorityWithoutHandle(__pvTask, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__pvTask), (void)(__uxPriority), TRC_SUCCESS)
326
327#define xTraceTaskSwitch(__pvTask, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__pvTask), (void)(__uxPriority), TRC_SUCCESS)
328
329#define xTraceTaskReady(__pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(__pvTask), TRC_SUCCESS)
330
331#define xTraceTaskSetCurrent(__pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(__pvTask), TRC_SUCCESS)
332
333#define xTraceTaskSetCurrentOnCore(__coreId, __pvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__coreId), (void)(__pvTask), TRC_SUCCESS)
334
335#define xTraceTaskGetCurrent(__ppvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(__ppvTask), TRC_SUCCESS)
336
337#define xTraceTaskGetCurrentOnCore(__coreId, __ppvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__coreId), (void)(__ppvTask), TRC_SUCCESS)
338
339#define xTraceTaskGetCurrentReturn() ((void*)0)
340
341#define xTraceTaskGetCurrentOnCoreReturn(__coreId) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(__coreId), (void*)0)
342
343#define xTraceTaskInstanceFinishedNow() (TRC_SUCCESS)
344
345#define xTraceTaskInstanceFinishedNext() (TRC_SUCCESS)
346
347#define xTraceTaskFind(__pvTask, __pxTaskHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__pvTask), (void)(__pxTaskHandle), TRC_SUCCESS)
348
349#define xTraceTaskGetAddress(__xTaskHandle, __ppvTask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__xTaskHandle), (void)(__ppvTask), TRC_SUCCESS)
350
351#define pvTraceTaskGetAddressReturn(__xTaskHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(__xTaskHandle), (void*)0)
352
353#endif
354
355#endif
traceResult xTraceTaskSetPriority(TraceTaskHandle_t xTaskHandle, TraceUnsignedBaseType_t uxPriority)
Sets trace task priority.
Definition trcTask.c:46
traceResult xTraceTaskSwitch(void *pvTask, TraceUnsignedBaseType_t uxPriority)
Registers trace task switch event.
Definition trcTask.c:79
traceResult xTraceTaskSetPriorityWithoutHandle(void *pvTask, TraceUnsignedBaseType_t uxPriority)
Sets trace task priority without trace task handle.
Definition trcTask.c:61