1 /*
2 * Percepio Trace Recorder for Tracealyzer v4.10.3
3 * Copyright 2023 Percepio AB
4 * www.percepio.com
5 *
6 * SPDX-License-Identifier: Apache-2.0
7 */
8 
9 /**
10  * @file
11  *
12  * @brief Public trace process APIs.
13  */
14 
15 #ifndef TRC_PROCESS_H
16 #define TRC_PROCESS_H
17 
18 #if (TRC_USE_TRACEALYZER_RECORDER == 1) && (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
19 
20 #include <trcTypes.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 /**
27  * @defgroup trace_process_apis Trace Process APIs
28  * @ingroup trace_recorder_apis
29  * @{
30  */
31 
32 /**
33  * @brief Register process in the trace.
34  *
35  * @param[in] szName Name.
36  * @param[in] uxPriority Priority.
37  * @param[out] pxProcessHandle Process handle.
38  *
39  * @retval TRC_FAIL Failure
40  * @retval TRC_SUCCESS Success
41  */
42 #define xTraceProcessRegister(szName, uxPriority, pxProcessHandle) xTraceObjectRegister(PSF_EVENT_PROCESS_CREATE, (void*)0, szName, uxPriority, (TraceObjectHandle_t*)(pxProcessHandle))
43 
44 /**
45  * @brief Register process in the trace.
46  *
47  * @param[in] pvProcess Process.
48  * @param[in] szName Name.
49  * @param[in] uxPriority Priority.
50  *
51  * @retval TRC_FAIL Failure
52  * @retval TRC_SUCCESS Success
53  */
54 #define xTraceProcessRegisterWithoutHandle(pvProcess, szName, uxPriority) xTraceObjectRegisterWithoutHandle(PSF_EVENT_PROCESS_CREATE, (void*)(pvProcess), szName, uxPriority)
55 
56 /**
57  * @brief Unregister process from trace.
58  *
59  * @param[in] xProcessHandle Process handle.
60  * @param[in] uxPriority Priority.
61  *
62  * @retval TRC_FAIL Failure
63  * @retval TRC_SUCCESS Success
64  */
65 #define xTraceProcessUnregister(xProcessHandle, uxPriority) xTraceObjectUnregister((TraceObjectHandle_t)(xProcessHandle), PSF_EVENT_PROCESS_DELETE, uxPriority)
66 
67 /**
68  * @brief Unregister process from trace.
69  *
70  * @param[in] pvProcess Process.
71  * @param[in] uxPriority Priority.
72  *
73  * @retval TRC_FAIL Failure
74  * @retval TRC_SUCCESS Success
75  */
76 #define xTraceProcessUnregisterWithoutHandle(pvProcess, uxPriority) xTraceObjectUnregisterWithoutHandle(PSF_EVENT_PROCESS_DELETE, (void*)(pvProcess), uxPriority)
77 
78 /** @} */
79 
80 #ifdef __cplusplus
81 }
82 #endif
83 
84 #else
85 
86 #define xTraceProcessRegister(__szName, __uxPriority, __pxProcessHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(__szName), (void)(__uxPriority), (void)(__pxProcessHandle), TRC_SUCCESS)
87 
88 #define xTraceProcessRegisterWithoutHandle(__pvProcess, __szName, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(__pvProcess), (void)(__szName), (void)(__uxPriority), TRC_SUCCESS)
89 
90 #define xTraceProcessUnregister(__xProcessHandle, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__xProcessHandle), (void)(__uxPriority), TRC_SUCCESS)
91 
92 #define xTraceProcessUnregisterWithoutHandle(__pvProcess, __uxPriority) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(__pvProcess), (void)(__uxPriority), TRC_SUCCESS)
93 
94 #endif
95 
96 #endif
97