1 #include <trcRecorder.h>
2 
3 extern volatile ULONG _tx_thread_system_state;
4 extern TX_THREAD *_tx_thread_execute_ptr;
5 extern TX_THREAD *_tx_thread_current_ptr;
6 extern TX_THREAD pxIdleTxThreadDummy;
7 static TX_THREAD *pxLastRunningTxThread = TX_NULL;
8 
9 traceResult xTraceEventBeginRawOffline_orig(uint32_t uiSize, TraceEventHandle_t* pxEventHandle);
10 traceResult xTraceEventEndOffline_orig(TraceEventHandle_t pxEventHandle);
11 
12 /* Original version of TRC_EVENT_BEGIN which uses xTraceEventBeginRawOffline_orig for the purpose
13  * of allowing interrupt locking for xTraceCheckThreadSwitch together with event posting. */
14 #define TRC_EVENT_BEGIN_OFFLINE_ORIG(uiEventCode, uiPayloadSize, pxEventHandle) \
15 	(xTraceIsRecorderEnabled() ? \
16 		( \
17 			(xTraceEventBeginRawOffline_orig(sizeof(TraceBaseEvent_t) + (uiPayloadSize), pxEventHandle)) == TRC_SUCCESS ? \
18 			( \
19 				pxTraceEventDataTable->coreEventData[TRC_CFG_GET_CURRENT_CORE()].eventCounter++, \
20 				SET_BASE_EVENT_DATA((TraceBaseEvent_t*)(((TraceEventData_t*)*(pxEventHandle))->pvBlob), \
21 					uiEventCode, \
22 					(((TraceEventData_t*)*(pxEventHandle))->size - sizeof(TraceBaseEvent_t)) / sizeof(uint32_t), \
23 					pxTraceEventDataTable->coreEventData[TRC_CFG_GET_CURRENT_CORE()].eventCounter), \
24 				((TraceEventData_t*)*(pxEventHandle))->offset += sizeof(TraceBaseEvent_t), \
25 				TRC_SUCCESS \
26 			) : TRC_FAIL \
27 		) : TRC_FAIL \
28 	)
29 
xTraceResetCurrentThread()30 void xTraceResetCurrentThread()
31 {
32 	pxLastRunningTxThread = TX_NULL;
33 }
34 
xTraceCheckThreadSwitch()35 void xTraceCheckThreadSwitch()
36 {
37 	static uint8_t uiFirstThreadSwitch = 0;
38 
39 	if (uiFirstThreadSwitch == 0 && _tx_thread_execute_ptr != 0 && _tx_thread_system_state == 0)
40 	{
41 		uiFirstThreadSwitch = 1;
42 
43 		/* Update */
44 		pxLastRunningTxThread = _tx_thread_execute_ptr;
45 
46 		TraceEventHandle_t xTraceHandle;
47 
48 		/* Since the regular xTraceEventBegin and xTraceEventEnd are wrapped via CTI, which calls this
49 		 * function, we have to use the original (non CTI wrapped) begin/end functions.
50 		 */
51 		if (TRC_EVENT_BEGIN_OFFLINE_ORIG(PSF_EVENT_THREAD_SYSTEM_SUSPEND_SUCCESS, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
52 			xTraceEventAddPointer(xTraceHandle, (void*)_tx_thread_execute_ptr);
53 			xTraceEventEndOffline_orig(xTraceHandle);
54 		}
55 	}
56 
57 	if (uiFirstThreadSwitch)
58 	{
59 		/* Handle thread swapping while considering our dummy idle thread mapping. */
60 		TX_THREAD *pxCurrentTxThread = _tx_thread_current_ptr == TX_NULL ? &pxIdleTxThreadDummy : _tx_thread_current_ptr;
61 
62 		if (pxCurrentTxThread != pxLastRunningTxThread) {
63 			/* Update */
64 			pxLastRunningTxThread = pxCurrentTxThread;
65 
66 			/* There has been a thread switch */
67 			TraceEventHandle_t xTraceHandle;
68 
69 			/* Since the regular xTraceEventBegin and xTraceEventEnd are wrapped via CTI, which calls this
70 			 * function, we have to use the original (non CTI wrapped) begin/end functions.
71 			 */
72 			if (TRC_EVENT_BEGIN_OFFLINE_ORIG(PSF_EVENT_TASK_POTENTIAL_SWITCH_RESULT, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
73 				xTraceEventAddPointer(xTraceHandle, (void*)pxCurrentTxThread);
74 				xTraceEventEndOffline_orig(xTraceHandle);
75 			}
76 		}
77 	}
78 }
79 
80 
xTraceISREnterHook(UINT uiTxEventCode,UINT uiISRNr)81 void xTraceISREnterHook(UINT uiTxEventCode, UINT uiISRNr)
82 {
83 	(void)uiTxEventCode;
84 	(void)uiISRNr;
85 }
86 
xTraceISRExitHook(UINT uiTxEventCode)87 void xTraceISRExitHook(UINT uiTxEventCode)
88 {
89 	(void)uiTxEventCode;
90 }
91 
xTraceTimeSliceHook(UINT uiTxEventCode,TX_THREAD * pxNextThreadPtr)92 void xTraceTimeSliceHook(UINT uiTxEventCode, TX_THREAD *pxNextThreadPtr)
93 {
94 	TraceEventHandle_t xTraceHandle;
95 
96 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
97 		xTraceEventAddPointer(xTraceHandle, (void*)pxNextThreadPtr);
98 		xTraceEventEnd(xTraceHandle);
99 	}
100 
101 	/* Due to the design of ThreadX tracing we have to insert a potential switch
102 	 * check here. */
103 	if (xTraceEventBegin(PSF_EVENT_TASK_POTENTIAL_SWITCH, 0, &xTraceHandle) == TRC_SUCCESS) {
104 		xTraceEventEnd(xTraceHandle);
105 	}
106 }
107 
108 
xTraceBlockAllocateHook(UINT uiTxEventCode,TX_BLOCK_POOL * pxBlockPool,ULONG uiWaitOption,UINT uiRemainingBlocks)109 void xTraceBlockAllocateHook(UINT uiTxEventCode, TX_BLOCK_POOL *pxBlockPool, ULONG uiWaitOption, UINT uiRemainingBlocks)
110 {
111 	TraceEventHandle_t xTraceHandle;
112 
113 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(ULONG) + sizeof(UINT), &xTraceHandle) == TRC_SUCCESS) {
114 		xTraceEventAddPointer(xTraceHandle, (void*)pxBlockPool);
115 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiWaitOption);
116 		xTraceEventAdd32(xTraceHandle, uiRemainingBlocks);
117 		xTraceEventEnd(xTraceHandle);
118 	}
119 }
120 
xTraceBlockPoolCreateHook(UINT uiTxEventCode,TX_BLOCK_POOL * pxBlockPool,ULONG uiBlockSize,VOID * pvPoolStart,ULONG uiTotalBlocks)121 void xTraceBlockPoolCreateHook(UINT uiTxEventCode, TX_BLOCK_POOL *pxBlockPool, ULONG uiBlockSize, VOID *pvPoolStart, ULONG uiTotalBlocks)
122 {
123 	TraceEventHandle_t xTraceHandle;
124 
125 	if (pxBlockPool->tx_block_pool_name != 0) {
126 		xTraceObjectSetNameWithoutHandle((void*)pxBlockPool, pxBlockPool->tx_block_pool_name);
127 	}
128 
129 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(ULONG) + sizeof(void*) + sizeof(ULONG), &xTraceHandle) == TRC_SUCCESS) {
130 		xTraceEventAddPointer(xTraceHandle, (void*)pxBlockPool);
131 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiBlockSize);
132 		xTraceEventAddPointer(xTraceHandle, (void*)pvPoolStart);
133 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiTotalBlocks);
134 		xTraceEventEnd(xTraceHandle);
135 	}
136 }
137 
xTraceBlockPoolDeleteHook(UINT uiTxEventCode,TX_BLOCK_POOL * pxBlockPool)138 void xTraceBlockPoolDeleteHook(UINT uiTxEventCode, TX_BLOCK_POOL *pxBlockPool)
139 {
140 	xTraceObjectUnregisterWithoutHandle(uiTxEventCode, (void*)pxBlockPool, 0);
141 }
142 
xTraceBlockPoolInfoGetHook(UINT uiTxEventCode,TX_BLOCK_POOL * pxBlockPool)143 void xTraceBlockPoolInfoGetHook(UINT uiTxEventCode, TX_BLOCK_POOL *pxBlockPool)
144 {
145 	TraceEventHandle_t xTraceHandle;
146 
147 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
148 		xTraceEventAddPointer(xTraceHandle, (void*)pxBlockPool);
149 		xTraceEventEnd(xTraceHandle);
150 	}
151 }
152 
xTraceBlockPoolPerformanceInfoGetHook(UINT uiTxEventCode,TX_BLOCK_POOL * pxBlockPool)153 void xTraceBlockPoolPerformanceInfoGetHook(UINT uiTxEventCode, TX_BLOCK_POOL *pxBlockPool)
154 {
155 	TraceEventHandle_t xTraceHandle;
156 
157 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
158 		xTraceEventAddPointer(xTraceHandle, (void*)pxBlockPool);
159 		xTraceEventEnd(xTraceHandle);
160 	}
161 }
162 
xTraceBlockPoolPerformanceSystemInfoGetHook(UINT uiTxEventCode)163 void xTraceBlockPoolPerformanceSystemInfoGetHook(UINT uiTxEventCode)
164 {
165 	/* Intentionally left empty */
166 	(void)uiTxEventCode;
167 }
168 
xTraceBlockPoolPrioritizeHook(UINT uiTxEventCode,TX_BLOCK_POOL * pxBlockPool)169 void xTraceBlockPoolPrioritizeHook(UINT uiTxEventCode, TX_BLOCK_POOL *pxBlockPool)
170 {
171 	TraceEventHandle_t xTraceHandle;
172 
173 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
174 		xTraceEventAddPointer(xTraceHandle, (void*)pxBlockPool);
175 		xTraceEventEnd(xTraceHandle);
176 	}
177 }
178 
xTraceBlockReleaseHook(UINT uiTxEventCode,VOID * pvBlockPool)179 void xTraceBlockReleaseHook(UINT uiTxEventCode, VOID *pvBlockPool)
180 {
181 	TraceEventHandle_t xTraceHandle;
182 
183 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
184 		xTraceEventAddPointer(xTraceHandle, (void*)pvBlockPool);
185 		xTraceEventEnd(xTraceHandle);
186 	}
187 }
188 
189 
xTraceByteAllocateHook(UINT uiTxEventCode)190 void xTraceByteAllocateHook(UINT uiTxEventCode)
191 {
192 	/* Intentionally left empty */
193 	(void)uiTxEventCode;
194 }
195 
xTraceBytePoolCreateHook(UINT uiTxEventCode,TX_BYTE_POOL * pxBytePool,VOID * pvStartPtr,ULONG uiPoolSize)196 void xTraceBytePoolCreateHook(UINT uiTxEventCode, TX_BYTE_POOL *pxBytePool, VOID *pvStartPtr, ULONG uiPoolSize)
197 {
198 	TraceEventHandle_t xTraceHandle;
199 
200 	if (pxBytePool->tx_byte_pool_name != 0) {
201 		xTraceObjectSetNameWithoutHandle((void*)pxBytePool, pxBytePool->tx_byte_pool_name);
202 	}
203 
204 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(void*) + sizeof(ULONG),
205 		&xTraceHandle) == TRC_SUCCESS) {
206 		xTraceEventAddPointer(xTraceHandle, (void*)pxBytePool);
207 		xTraceEventAddPointer(xTraceHandle, (void*)pvStartPtr);
208 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiPoolSize);
209 		xTraceEventEnd(xTraceHandle);
210 	}
211 }
212 
xTraceBytePoolDeleteHook(UINT uiTxEventCode,TX_BYTE_POOL * pxBytePool)213 void xTraceBytePoolDeleteHook(UINT uiTxEventCode, TX_BYTE_POOL *pxBytePool)
214 {
215 	xTraceObjectUnregisterWithoutHandle(uiTxEventCode, (void*)pxBytePool, 0);
216 }
217 
xTraceBytePoolInfoGetHook(UINT uiTxEventCode,TX_BYTE_POOL * pxBytePool)218 void xTraceBytePoolInfoGetHook(UINT uiTxEventCode, TX_BYTE_POOL *pxBytePool)
219 {
220 	TraceEventHandle_t xTraceHandle;
221 
222 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
223 		xTraceEventAddPointer(xTraceHandle, (void*)pxBytePool);
224 		xTraceEventEnd(xTraceHandle);
225 	}
226 }
227 
xTraceBytePoolPerformanceInfoGetHook(UINT uiTxEventCode,TX_BYTE_POOL * pxBytePool)228 void xTraceBytePoolPerformanceInfoGetHook(UINT uiTxEventCode, TX_BYTE_POOL *pxBytePool)
229 {
230 	TraceEventHandle_t xTraceHandle;
231 
232 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
233 		xTraceEventAddPointer(xTraceHandle, (void*)pxBytePool);
234 		xTraceEventEnd(xTraceHandle);
235 	}
236 }
237 
xTraceBytePoolPerformanceSystemInfoGetHook(UINT uiTxEventCode)238 void xTraceBytePoolPerformanceSystemInfoGetHook(UINT uiTxEventCode)
239 {
240 	/* Intentionally left empty */
241 	(void)uiTxEventCode;
242 }
243 
xTraceBytePoolPrioritizeHook(UINT uiTxEventCode,TX_BYTE_POOL * pxBytePool)244 void xTraceBytePoolPrioritizeHook(UINT uiTxEventCode, TX_BYTE_POOL *pxBytePool)
245 {
246 	TraceEventHandle_t xTraceHandle;
247 
248 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
249 		xTraceEventAddPointer(xTraceHandle, (void*)pxBytePool);
250 		xTraceEventEnd(xTraceHandle);
251 	}
252 }
253 
xTraceByteReleaseHook(UINT uiTxEventCode,TX_BYTE_POOL * pxBytePool,VOID * pvMemory,UINT uiAvailableBytes)254 void xTraceByteReleaseHook(UINT uiTxEventCode, TX_BYTE_POOL *pxBytePool, VOID *pvMemory, UINT uiAvailableBytes)
255 {
256 	TraceEventHandle_t xTraceHandle;
257 
258 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(void*) + sizeof(UINT),
259 		&xTraceHandle) == TRC_SUCCESS) {
260 		xTraceEventAddPointer(xTraceHandle, (void*)pxBytePool);
261 		xTraceEventAddPointer(xTraceHandle, (void*)pvMemory);
262 		xTraceEventAdd32(xTraceHandle, uiAvailableBytes);
263 		xTraceEventEnd(xTraceHandle);
264 	}
265 }
266 
267 
xTraceEventFlagsCreateHook(UINT uiTxEventCode,TX_EVENT_FLAGS_GROUP * pxFlagsGroup)268 void xTraceEventFlagsCreateHook(UINT uiTxEventCode, TX_EVENT_FLAGS_GROUP *pxFlagsGroup)
269 {
270 	TraceEventHandle_t xTraceHandle;
271 
272 	if (pxFlagsGroup->tx_event_flags_group_name != 0) {
273 		xTraceObjectSetNameWithoutHandle((void*)pxFlagsGroup, pxFlagsGroup->tx_event_flags_group_name);
274 	}
275 
276 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
277 		xTraceEventAddPointer(xTraceHandle, (void*)pxFlagsGroup);
278 		xTraceEventEnd(xTraceHandle);
279 	}
280 }
281 
xTraceEventFlagsDeleteHook(UINT uiTxEventCode,TX_EVENT_FLAGS_GROUP * pxFlagsGroup)282 void xTraceEventFlagsDeleteHook(UINT uiTxEventCode, TX_EVENT_FLAGS_GROUP *pxFlagsGroup)
283 {
284 	xTraceObjectUnregisterWithoutHandle(uiTxEventCode, (void*)pxFlagsGroup, 0);
285 }
286 
xTraceEventFlagsGetHook(UINT uiTxEventCode,TX_EVENT_FLAGS_GROUP * pxFlagsGroup,ULONG ulRequestedFlags,UINT uiGetOption)287 void xTraceEventFlagsGetHook(UINT uiTxEventCode, TX_EVENT_FLAGS_GROUP *pxFlagsGroup, ULONG ulRequestedFlags, UINT uiGetOption)
288 {
289 	TraceEventHandle_t xTraceHandle;
290 
291 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(ULONG) + sizeof(UINT), &xTraceHandle) == TRC_SUCCESS) {
292 		xTraceEventAddPointer(xTraceHandle, (void*)pxFlagsGroup);
293 		xTraceEventAddUnsignedBaseType(xTraceHandle, ulRequestedFlags);
294 		xTraceEventAdd32(xTraceHandle, uiGetOption);
295 		xTraceEventEnd(xTraceHandle);
296 	}
297 }
298 
xTraceEventFlagsInfoGetHook(UINT uiTxEventCode,TX_EVENT_FLAGS_GROUP * pxFlagsGroup)299 void xTraceEventFlagsInfoGetHook(UINT uiTxEventCode, TX_EVENT_FLAGS_GROUP *pxFlagsGroup)
300 {
301 	TraceEventHandle_t xTraceHandle;
302 
303 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
304 		xTraceEventAddPointer(xTraceHandle, (void*)pxFlagsGroup);
305 		xTraceEventEnd(xTraceHandle);
306 	}
307 }
308 
xTraceEventFlagsPerformanceInfoGetHook(UINT uiTxEventCode,TX_EVENT_FLAGS_GROUP * pxFlagsGroup)309 void xTraceEventFlagsPerformanceInfoGetHook(UINT uiTxEventCode, TX_EVENT_FLAGS_GROUP *pxFlagsGroup)
310 {
311 	TraceEventHandle_t xTraceHandle;
312 
313 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
314 		xTraceEventAddPointer(xTraceHandle, (void*)pxFlagsGroup);
315 		xTraceEventEnd(xTraceHandle);
316 	}
317 }
318 
xTraceEventFlagsPerformanceSystemInfoGetHook(UINT uiTxEventCode)319 void xTraceEventFlagsPerformanceSystemInfoGetHook(UINT uiTxEventCode)
320 {
321 	/* Intentionally left empty */
322 	(void)uiTxEventCode;
323 }
324 
xTraceEventFlagsSetHook(UINT uiTxEventCode,TX_EVENT_FLAGS_GROUP * pxFlagsGroup,ULONG ulFlagsToSet,UINT uiSetOption)325 void xTraceEventFlagsSetHook(UINT uiTxEventCode, TX_EVENT_FLAGS_GROUP *pxFlagsGroup, ULONG ulFlagsToSet, UINT uiSetOption)
326 {
327 	TraceEventHandle_t xTraceHandle;
328 
329 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(ULONG) + sizeof(UINT), &xTraceHandle) == TRC_SUCCESS) {
330 		xTraceEventAddPointer(xTraceHandle, (void*)pxFlagsGroup);
331 		xTraceEventAddUnsignedBaseType(xTraceHandle, ulFlagsToSet);
332 		xTraceEventAdd32(xTraceHandle, uiSetOption);
333 		xTraceEventEnd(xTraceHandle);
334 	}
335 }
336 
xTraceEventFlagsSetNotifyHook(UINT uiTxEventCode,TX_EVENT_FLAGS_GROUP * pxFlagsGroup)337 void xTraceEventFlagsSetNotifyHook(UINT uiTxEventCode, TX_EVENT_FLAGS_GROUP *pxFlagsGroup)
338 {
339 	TraceEventHandle_t xTraceHandle;
340 
341 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
342 		xTraceEventAddPointer(xTraceHandle, (void*)pxFlagsGroup);
343 		xTraceEventEnd(xTraceHandle);
344 	}
345 }
346 
347 
xTraceMutexCreateHook(UINT uiTxEventCode,TX_MUTEX * pxMutex,UINT uiPrioInherit)348 void xTraceMutexCreateHook(UINT uiTxEventCode, TX_MUTEX *pxMutex, UINT uiPrioInherit)
349 {
350 	TraceEventHandle_t xTraceHandle;
351 
352 	if (pxMutex->tx_mutex_name != 0) {
353 		xTraceObjectSetNameWithoutHandle((void*)pxMutex, pxMutex->tx_mutex_name);
354 	}
355 
356 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(UINT), &xTraceHandle) == TRC_SUCCESS) {
357 		xTraceEventAddPointer(xTraceHandle, (void*)pxMutex);
358 		xTraceEventAdd32(xTraceHandle, uiPrioInherit);
359 		xTraceEventEnd(xTraceHandle);
360 	}
361 }
362 
xTraceMutexDeleteHook(UINT uiTxEventCode,TX_MUTEX * pxMutex)363 void xTraceMutexDeleteHook(UINT uiTxEventCode, TX_MUTEX *pxMutex)
364 {
365 	xTraceObjectUnregisterWithoutHandle(uiTxEventCode, (void*)pxMutex, 0);
366 }
367 
xTraceMutexGetHook(UINT uiTxEventCode,TX_MUTEX * pxMutex)368 void xTraceMutexGetHook(UINT uiTxEventCode, TX_MUTEX *pxMutex)
369 {
370 	/* Intentionally left empty */
371 	(void)uiTxEventCode;
372 	(void)pxMutex;
373 }
374 
xTraceMutexInfoGetHook(UINT uiTxEventCode,TX_MUTEX * pxMutex)375 void xTraceMutexInfoGetHook(UINT uiTxEventCode, TX_MUTEX *pxMutex)
376 {
377 	TraceEventHandle_t xTraceHandle;
378 
379 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
380 		xTraceEventAddPointer(xTraceHandle, (void*)pxMutex);
381 		xTraceEventEnd(xTraceHandle);
382 	}
383 }
384 
xTraceMutexPerformanceInfoGetHook(UINT uiTxEventCode,TX_MUTEX * pxMutex)385 void xTraceMutexPerformanceInfoGetHook(UINT uiTxEventCode, TX_MUTEX *pxMutex)
386 {
387 	TraceEventHandle_t xTraceHandle;
388 
389 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
390 		xTraceEventAddPointer(xTraceHandle, (void*)pxMutex);
391 		xTraceEventEnd(xTraceHandle);
392 	}
393 }
394 
xTraceMutexPerformanceSystemInfoGetHook(UINT uiTxEventCode)395 void xTraceMutexPerformanceSystemInfoGetHook(UINT uiTxEventCode)
396 {
397 	/* Intentionally left empty */
398 	(void)uiTxEventCode;
399 }
400 
xTraceMutexPrioritizeHook(UINT uiTxEventCode,TX_MUTEX * pxMutex)401 void xTraceMutexPrioritizeHook(UINT uiTxEventCode, TX_MUTEX *pxMutex)
402 {
403 	TraceEventHandle_t xTraceHandle;
404 
405 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
406 		xTraceEventAddPointer(xTraceHandle, (void*)pxMutex);
407 		xTraceEventEnd(xTraceHandle);
408 	}
409 }
410 
xTraceMutexPutHook(UINT uiTxEventCode,TX_MUTEX * pxMutex,UINT uiStateAfter)411 void xTraceMutexPutHook(UINT uiTxEventCode, TX_MUTEX *pxMutex, UINT uiStateAfter)
412 {
413 	TraceEventHandle_t xTraceHandle;
414 
415 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(UINT), &xTraceHandle) == TRC_SUCCESS) {
416 		xTraceEventAddPointer(xTraceHandle, (void*)pxMutex);
417 		xTraceEventAdd32(xTraceHandle, uiStateAfter);
418 		xTraceEventEnd(xTraceHandle);
419 	}
420 }
421 
422 
xTraceQueueCreateHook(UINT uiTxEventCode,TX_QUEUE * pxQueue,UINT uiMessageSize,VOID * pvQueueStart,UINT uiQueueSize)423 void xTraceQueueCreateHook(UINT uiTxEventCode, TX_QUEUE *pxQueue, UINT uiMessageSize, VOID *pvQueueStart, UINT uiQueueSize)
424 {
425 	TraceEventHandle_t xTraceHandle;
426 
427 	if (pxQueue->tx_queue_name != 0) {
428 		xTraceObjectSetNameWithoutHandle((void*)pxQueue, pxQueue->tx_queue_name);
429 	}
430 
431 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(UINT) + sizeof(void*) + sizeof(UINT),
432 		&xTraceHandle) == TRC_SUCCESS) {
433 		xTraceEventAddPointer(xTraceHandle, (void*)pxQueue);
434 		xTraceEventAdd32(xTraceHandle, uiMessageSize);
435 		xTraceEventAddPointer(xTraceHandle, (void*)pvQueueStart);
436 		xTraceEventAdd32(xTraceHandle, uiQueueSize);
437 		xTraceEventEnd(xTraceHandle);
438 	}
439 }
440 
xTraceQueueDeleteHook(UINT uiTxEventCode,TX_QUEUE * pxQueue)441 void xTraceQueueDeleteHook(UINT uiTxEventCode, TX_QUEUE *pxQueue)
442 {
443 	xTraceObjectUnregisterWithoutHandle(uiTxEventCode, (void*)pxQueue, 0);
444 }
445 
xTraceQueueFlushHook(UINT uiTxEventCode,TX_QUEUE * pxQueue)446 void xTraceQueueFlushHook(UINT uiTxEventCode, TX_QUEUE *pxQueue)
447 {
448 	TraceEventHandle_t xTraceHandle;
449 
450 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
451 		xTraceEventAddPointer(xTraceHandle, (void*)pxQueue);
452 		xTraceEventEnd(xTraceHandle);
453 	}
454 }
455 
xTraceQueueFrontSendHook(UINT uiTxEventCode,TX_QUEUE * pxQueue)456 void xTraceQueueFrontSendHook(UINT uiTxEventCode, TX_QUEUE *pxQueue)
457 {
458 	/* Intentionally left empty */
459 	(void)uiTxEventCode;
460 	(void)pxQueue;
461 }
462 
xTraceQueueInfoGetHook(UINT uiTxEventCode,TX_QUEUE * pxQueue)463 void xTraceQueueInfoGetHook(UINT uiTxEventCode, TX_QUEUE *pxQueue)
464 {
465 	TraceEventHandle_t xTraceHandle;
466 
467 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
468 		xTraceEventAddPointer(xTraceHandle, (void*)pxQueue);
469 		xTraceEventEnd(xTraceHandle);
470 	}
471 }
472 
xTraceQueuePerformanceInfoGetHook(UINT uiTxEventCode,TX_QUEUE * pxQueue)473 void xTraceQueuePerformanceInfoGetHook(UINT uiTxEventCode, TX_QUEUE *pxQueue)
474 {
475 	TraceEventHandle_t xTraceHandle;
476 
477 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
478 		xTraceEventAddPointer(xTraceHandle, (void*)pxQueue);
479 		xTraceEventEnd(xTraceHandle);
480 	}
481 }
482 
xTraceQueuePerformanceSystemInfoGetHook(UINT uiTxEventCode)483 void xTraceQueuePerformanceSystemInfoGetHook(UINT uiTxEventCode)
484 {
485 	/* Intentionally left empty */
486 	(void)uiTxEventCode;
487 }
488 
xTraceQueuePrioritizeHook(UINT uiTxEventCode,TX_QUEUE * pxQueue)489 void xTraceQueuePrioritizeHook(UINT uiTxEventCode, TX_QUEUE *pxQueue)
490 {
491 	TraceEventHandle_t xTraceHandle;
492 
493 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
494 		xTraceEventAddPointer(xTraceHandle, (void*)pxQueue);
495 		xTraceEventEnd(xTraceHandle);
496 	}
497 }
498 
xTraceQueueReceiveHook(UINT uiTxEventCode)499 void xTraceQueueReceiveHook(UINT uiTxEventCode)
500 {
501 	/* Intentionally left empty */
502 	(void)uiTxEventCode;
503 }
504 
xTraceQueueSendHook(UINT uiTxEventCode)505 void xTraceQueueSendHook(UINT uiTxEventCode)
506 {
507 	/* Intentionally left empty */
508 	(void)uiTxEventCode;
509 }
510 
xTraceQueueSendNotifyHook(UINT uiTxEventCode,TX_QUEUE * pxQueue)511 void xTraceQueueSendNotifyHook(UINT uiTxEventCode, TX_QUEUE *pxQueue)
512 {
513 	TraceEventHandle_t xTraceHandle;
514 
515 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
516 		xTraceEventAddPointer(xTraceHandle, (void*)pxQueue);
517 		xTraceEventEnd(xTraceHandle);
518 	}
519 }
520 
521 
xTraceSemaphoreCeilingPutHook(UINT uiTxEventCode)522 void xTraceSemaphoreCeilingPutHook(UINT uiTxEventCode)
523 {
524 	/* Intentionally left empty */
525 	(void)uiTxEventCode;
526 }
527 
xTraceSemaphoreCreateHook(UINT uiTxEventCode,TX_SEMAPHORE * pxSemaphore,ULONG uiInitialCount)528 void xTraceSemaphoreCreateHook(UINT uiTxEventCode, TX_SEMAPHORE *pxSemaphore, ULONG uiInitialCount)
529 {
530 	TraceEventHandle_t xTraceHandle;
531 
532 	if (pxSemaphore->tx_semaphore_name != 0) {
533 		xTraceObjectSetNameWithoutHandle((void*)pxSemaphore, pxSemaphore->tx_semaphore_name);
534 	}
535 
536 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(ULONG), &xTraceHandle) == TRC_SUCCESS) {
537 		xTraceEventAddPointer(xTraceHandle, (void*)pxSemaphore);
538 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiInitialCount);
539 		xTraceEventEnd(xTraceHandle);
540 	}
541 }
542 
xTraceSemaphoreDeleteHook(UINT uiTxEventCode,TX_SEMAPHORE * pxSemaphore)543 void xTraceSemaphoreDeleteHook(UINT uiTxEventCode, TX_SEMAPHORE *pxSemaphore)
544 {
545 	xTraceObjectUnregisterWithoutHandle(uiTxEventCode, (void*)pxSemaphore, pxSemaphore->tx_semaphore_count);
546 }
547 
xTraceSemaphoreGetHook(UINT uiTxEventCode)548 void xTraceSemaphoreGetHook(UINT uiTxEventCode)
549 {
550 	/* Intentionally left empty */
551 	(void)uiTxEventCode;
552 }
553 
xTraceSemaphoreInfoGetHook(UINT uiTxEventCode,TX_SEMAPHORE * pxSemaphore)554 void xTraceSemaphoreInfoGetHook(UINT uiTxEventCode, TX_SEMAPHORE *pxSemaphore)
555 {
556 	TraceEventHandle_t xTraceHandle;
557 
558 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
559 		xTraceEventAddPointer(xTraceHandle, (void*)pxSemaphore);
560 		xTraceEventEnd(xTraceHandle);
561 	}
562 }
563 
xTraceSemaphorePerformanceInfoGetHook(UINT uiTxEventCode,TX_SEMAPHORE * pxSemaphore)564 void xTraceSemaphorePerformanceInfoGetHook(UINT uiTxEventCode, TX_SEMAPHORE *pxSemaphore)
565 {
566 	TraceEventHandle_t xTraceHandle;
567 
568 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
569 		xTraceEventAddPointer(xTraceHandle, (void*)pxSemaphore);
570 		xTraceEventEnd(xTraceHandle);
571 	}
572 }
573 
xTraceSemaphorePerformanceSystemInfoGetHook(UINT uiTxEventCode)574 void xTraceSemaphorePerformanceSystemInfoGetHook(UINT uiTxEventCode)
575 {
576 	/* Intentionally left empty */
577 	(void)uiTxEventCode;
578 }
579 
xTraceSemaphorePrioritizeHook(UINT uiTxEventCode,TX_SEMAPHORE * pxSemaphore)580 void xTraceSemaphorePrioritizeHook(UINT uiTxEventCode, TX_SEMAPHORE *pxSemaphore)
581 {
582 	TraceEventHandle_t xTraceHandle;
583 
584 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
585 		xTraceEventAddPointer(xTraceHandle, (void*)pxSemaphore);
586 		xTraceEventEnd(xTraceHandle);
587 	}
588 }
589 
xTraceSemaphorePutHook(UINT uiTxEventCode,TX_SEMAPHORE * pxSemaphore)590 void xTraceSemaphorePutHook(UINT uiTxEventCode, TX_SEMAPHORE *pxSemaphore)
591 {
592 	TraceEventHandle_t xTraceHandle;
593 
594 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
595 		xTraceEventAddPointer(xTraceHandle, (void*)pxSemaphore);
596 		xTraceEventEnd(xTraceHandle);
597 	}
598 }
599 
xTraceSemaphorePutNotifyHook(UINT uiTxEventCode,TX_SEMAPHORE * pxSemaphore)600 void xTraceSemaphorePutNotifyHook(UINT uiTxEventCode, TX_SEMAPHORE *pxSemaphore)
601 {
602 	TraceEventHandle_t xTraceHandle;
603 
604 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
605 		xTraceEventAddPointer(xTraceHandle, (void*)pxSemaphore);
606 		xTraceEventEnd(xTraceHandle);
607 	}
608 }
609 
xTraceThreadResumeHook(UINT uiTxEventCode,TX_THREAD * pxThread)610 void xTraceThreadResumeHook(UINT uiTxEventCode, TX_THREAD *pxThread)
611 {
612 	(void)uiTxEventCode;
613 
614 	xTraceTaskReady(pxThread);
615 }
616 
xTraceThreadSuspendHook(UINT uiTxEventCode,TX_THREAD * pxThread)617 void xTraceThreadSuspendHook(UINT uiTxEventCode, TX_THREAD *pxThread)
618 {
619 	(void)pxThread;
620 	(void)uiTxEventCode;
621 
622 	TraceEventHandle_t xTraceHandle;
623 
624 	if (xTraceEventBegin(PSF_EVENT_TASK_POTENTIAL_SWITCH, 0, &xTraceHandle) == TRC_SUCCESS) {
625 		xTraceEventEnd(xTraceHandle);
626 	}
627 }
628 
xTraceThreadCreateHook(UINT uiTxEventCode,TX_THREAD * pxThread,UINT uiPriority)629 void xTraceThreadCreateHook(UINT uiTxEventCode, TX_THREAD *pxThread, UINT uiPriority)
630 {
631 	(void)uiTxEventCode;
632 
633 	TraceTaskHandle_t xTaskHandle;
634 
635 	xTraceTaskRegister((void*)pxThread, pxThread->tx_thread_name, uiPriority, &xTaskHandle);
636 }
637 
xTraceThreadDeleteHook(UINT uiTxEventCode,TX_THREAD * pxThread)638 void xTraceThreadDeleteHook(UINT uiTxEventCode, TX_THREAD *pxThread)
639 {
640 	(void)uiTxEventCode;
641 
642 	xTraceTaskUnregisterWithoutHandle((void*)pxThread, pxThread->tx_thread_priority);
643 }
644 
xTraceThreadEntryExitNotifyHook(UINT uiTxEventCode,TX_THREAD * pxThread)645 void xTraceThreadEntryExitNotifyHook(UINT uiTxEventCode, TX_THREAD *pxThread)
646 {
647 	TraceEventHandle_t xTraceHandle;
648 
649 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
650 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
651 		xTraceEventEnd(xTraceHandle);
652 	}
653 }
654 
xTraceThreadIdentifyHook(UINT uiTxEventCode)655 void xTraceThreadIdentifyHook(UINT uiTxEventCode)
656 {
657 	TraceEventHandle_t xTraceHandle;
658 
659 	if (xTraceEventBegin(uiTxEventCode, 0, &xTraceHandle) == TRC_SUCCESS) {
660 		xTraceEventEnd(xTraceHandle);
661 	}
662 }
663 
xTraceThreadInfoGetHook(UINT uiTxEventCode,TX_THREAD * pxThread)664 void xTraceThreadInfoGetHook(UINT uiTxEventCode, TX_THREAD *pxThread)
665 {
666 	TraceEventHandle_t xTraceHandle;
667 
668 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
669 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
670 		xTraceEventEnd(xTraceHandle);
671 	}
672 }
673 
xTraceThreadPerformanceInfoGetHook(UINT uiTxEventCode,TX_THREAD * pxThread)674 void xTraceThreadPerformanceInfoGetHook(UINT uiTxEventCode, TX_THREAD *pxThread)
675 {
676 	TraceEventHandle_t xTraceHandle;
677 
678 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
679 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
680 		xTraceEventEnd(xTraceHandle);
681 	}
682 }
683 
xTraceThreadPerformanceSystemInfoGetHook(UINT uiTxEventCode)684 void xTraceThreadPerformanceSystemInfoGetHook(UINT uiTxEventCode)
685 {
686 	TraceEventHandle_t xTraceHandle;
687 
688 	if (xTraceEventBegin(uiTxEventCode, 0, &xTraceHandle) == TRC_SUCCESS) {
689 		xTraceEventEnd(xTraceHandle);
690 	}
691 }
692 
xTraceThreadPreemptionChangeHook(UINT uiTxEventCode,TX_THREAD * pxThread,UINT uiNewThreshold)693 void xTraceThreadPreemptionChangeHook(UINT uiTxEventCode, TX_THREAD *pxThread, UINT uiNewThreshold)
694 {
695 	TraceEventHandle_t xTraceHandle;
696 
697 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(UINT), &xTraceHandle) == TRC_SUCCESS) {
698 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
699 		xTraceEventAdd32(xTraceHandle, uiNewThreshold);
700 		xTraceEventEnd(xTraceHandle);
701 	}
702 }
703 
xTraceThreadPriorityChangeHook(UINT uiTxEventCode,TX_THREAD * pxThread,UINT uiNewPriority)704 void xTraceThreadPriorityChangeHook(UINT uiTxEventCode, TX_THREAD *pxThread, UINT uiNewPriority)
705 {
706 	TraceEventHandle_t xTraceHandle;
707 
708 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(UINT), &xTraceHandle) == TRC_SUCCESS) {
709 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
710 		xTraceEventAdd32(xTraceHandle, uiNewPriority);
711 		xTraceEventEnd(xTraceHandle);
712 	}
713 }
714 
xTraceThreadRelinquishHook(UINT uiTxEventCode)715 void xTraceThreadRelinquishHook(UINT uiTxEventCode)
716 {
717 	TraceEventHandle_t xTraceHandle;
718 
719 	if (xTraceEventBegin(uiTxEventCode, 0, &xTraceHandle) == TRC_SUCCESS) {
720 		xTraceEventEnd(xTraceHandle);
721 	}
722 
723 	/* Due to the design of ThreadX tracing we have to insert a potential switch
724 	 * check here. */
725 	if (xTraceEventBegin(PSF_EVENT_TASK_POTENTIAL_SWITCH, 0, &xTraceHandle) == TRC_SUCCESS) {
726 		xTraceEventEnd(xTraceHandle);
727 	}
728 }
729 
xTraceThreadResetHook(UINT uiTxEventCode,TX_THREAD * pxThread)730 void xTraceThreadResetHook(UINT uiTxEventCode, TX_THREAD *pxThread)
731 {
732 	TraceEventHandle_t xTraceHandle;
733 
734 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
735 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
736 		xTraceEventEnd(xTraceHandle);
737 	}
738 }
739 
xTraceThreadResumeAPIHook(UINT uiTxEventCode,TX_THREAD * pxThread)740 void xTraceThreadResumeAPIHook(UINT uiTxEventCode, TX_THREAD *pxThread)
741 {
742 	TraceEventHandle_t xTraceHandle;
743 
744 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
745 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
746 		xTraceEventEnd(xTraceHandle);
747 	}
748 }
749 
xTraceThreadSleepHook(UINT uiTxEventCode,TX_THREAD * pxThread)750 void xTraceThreadSleepHook(UINT uiTxEventCode, TX_THREAD *pxThread)
751 {
752 	/* Intentionally left empty */
753 	(void)uiTxEventCode;
754 	(void)pxThread;
755 }
756 
xTraceThreadStackErrorNotifyHook(UINT uiTxEventCode)757 void xTraceThreadStackErrorNotifyHook(UINT uiTxEventCode)
758 {
759 	/* Intentionally left empty */
760 	(void)uiTxEventCode;
761 }
762 
xTraceThreadSuspendAPIHook(UINT uiTxEventCode,TX_THREAD * pxThread)763 void xTraceThreadSuspendAPIHook(UINT uiTxEventCode, TX_THREAD *pxThread)
764 {
765 	TraceEventHandle_t xTraceHandle;
766 
767 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
768 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
769 		xTraceEventEnd(xTraceHandle);
770 	}
771 }
772 
xTraceThreadTerminateHook(UINT uiTxEventCode,TX_THREAD * pxThread)773 void xTraceThreadTerminateHook(UINT uiTxEventCode, TX_THREAD *pxThread)
774 {
775 	TraceEventHandle_t xTraceHandle;
776 
777 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
778 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
779 		xTraceEventEnd(xTraceHandle);
780 	}
781 }
782 
xTraceThreadTimeSliceChangeHook(UINT uiTxEventCode,TX_THREAD * pxThread,UINT uiNewTimeSlice)783 void xTraceThreadTimeSliceChangeHook(UINT uiTxEventCode, TX_THREAD *pxThread, UINT uiNewTimeSlice)
784 {
785 	TraceEventHandle_t xTraceHandle;
786 
787 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(UINT), &xTraceHandle) == TRC_SUCCESS) {
788 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
789 		xTraceEventAdd32(xTraceHandle, uiNewTimeSlice);
790 		xTraceEventEnd(xTraceHandle);
791 	}
792 }
793 
xTraceThreadWaitAbortHook(UINT uiTxEventCode,TX_THREAD * pxThread)794 void xTraceThreadWaitAbortHook(UINT uiTxEventCode, TX_THREAD *pxThread)
795 {
796 	TraceEventHandle_t xTraceHandle;
797 
798 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
799 		xTraceEventAddPointer(xTraceHandle, (void*)pxThread);
800 		xTraceEventEnd(xTraceHandle);
801 	}
802 }
803 
804 
xTraceTimeGetHook(UINT uiTxEventCode)805 void xTraceTimeGetHook(UINT uiTxEventCode)
806 {
807 	/* Intentionally left empty */
808 	(void)uiTxEventCode;
809 }
810 
xTraceTimeSetHook(UINT uiTxEventCode,TX_TIMER * pxTimer)811 void xTraceTimeSetHook(UINT uiTxEventCode, TX_TIMER *pxTimer)
812 {
813 	TraceEventHandle_t xTraceHandle;
814 
815 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
816 		xTraceEventAddPointer(xTraceHandle, (void*)pxTimer);
817 		xTraceEventEnd(xTraceHandle);
818 	}
819 }
820 
xTraceTimerActivateHook(UINT uiTxEventCode,TX_TIMER * pxTimer)821 void xTraceTimerActivateHook(UINT uiTxEventCode,  TX_TIMER *pxTimer)
822 {
823 	TraceEventHandle_t xTraceHandle;
824 
825 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
826 		xTraceEventAddPointer(xTraceHandle, (void*)pxTimer);
827 		xTraceEventEnd(xTraceHandle);
828 	}
829 }
830 
xTraceTimerChangeHook(UINT uiTxEventCode,TX_TIMER * pxTimer,ULONG uiInitialTicks,ULONG uiRescheduleTicks)831 void xTraceTimerChangeHook(UINT uiTxEventCode, TX_TIMER *pxTimer, ULONG uiInitialTicks, ULONG uiRescheduleTicks)
832 {
833 	TraceEventHandle_t xTraceHandle;
834 
835 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(ULONG) + sizeof(ULONG), &xTraceHandle) == TRC_SUCCESS) {
836 		xTraceEventAddPointer(xTraceHandle, (void*)pxTimer);
837 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiInitialTicks);
838 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiRescheduleTicks);
839 		xTraceEventEnd(xTraceHandle);
840 	}
841 }
842 
xTraceTimerCreateHook(UINT uiTxEventCode,TX_TIMER * pxTimer,ULONG uiInitialTicks,ULONG uiRescheduleTicks,UINT uiAutoActivate)843 void xTraceTimerCreateHook(UINT uiTxEventCode, TX_TIMER *pxTimer, ULONG uiInitialTicks, ULONG uiRescheduleTicks, UINT uiAutoActivate)
844 {
845 	TraceEventHandle_t xTraceHandle;
846 
847 	if (pxTimer->tx_timer_name != 0) {
848 		xTraceObjectSetNameWithoutHandle((void*)pxTimer, pxTimer->tx_timer_name);
849 	}
850 
851 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*) + sizeof(ULONG) + sizeof(ULONG) + sizeof(UINT),
852 		&xTraceHandle) == TRC_SUCCESS) {
853 		xTraceEventAddPointer(xTraceHandle, (void*)pxTimer);
854 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiInitialTicks);
855 		xTraceEventAddUnsignedBaseType(xTraceHandle, uiRescheduleTicks);
856 		xTraceEventAdd32(xTraceHandle, uiAutoActivate);
857 		xTraceEventEnd(xTraceHandle);
858 	}
859 }
860 
xTraceTimerDeactivateHook(UINT uiTxEventCode,TX_TIMER * pxTimer)861 void xTraceTimerDeactivateHook(UINT uiTxEventCode, TX_TIMER *pxTimer)
862 {
863 	TraceEventHandle_t xTraceHandle;
864 
865 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
866 		xTraceEventAddPointer(xTraceHandle, (void*)pxTimer);
867 		xTraceEventEnd(xTraceHandle);
868 	}
869 }
870 
xTraceTimerDeleteHook(UINT uiTxEventCode,TX_TIMER * pxTimer)871 void xTraceTimerDeleteHook(UINT uiTxEventCode, TX_TIMER *pxTimer)
872 {
873 	xTraceObjectUnregisterWithoutHandle(uiTxEventCode, (void*)pxTimer, 0);
874 }
875 
xTraceTimerInfoGetHook(UINT uiTxEventCode,TX_TIMER * pxTimer)876 void xTraceTimerInfoGetHook(UINT uiTxEventCode, TX_TIMER *pxTimer)
877 {
878 	TraceEventHandle_t xTraceHandle;
879 
880 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
881 		xTraceEventAddPointer(xTraceHandle, (void*)pxTimer);
882 		xTraceEventEnd(xTraceHandle);
883 	}
884 }
885 
xTraceTimerPerformanceInfoGet(UINT uiTxEventCode,TX_TIMER * pxTimer)886 void xTraceTimerPerformanceInfoGet(UINT uiTxEventCode, TX_TIMER *pxTimer)
887 {
888 	TraceEventHandle_t xTraceHandle;
889 
890 	if (xTraceEventBegin(uiTxEventCode, sizeof(void*), &xTraceHandle) == TRC_SUCCESS) {
891 		xTraceEventAddPointer(xTraceHandle, (void*)pxTimer);
892 		xTraceEventEnd(xTraceHandle);
893 	}
894 }
895 
xTraceTimerPerformanceSystemInfoGet(UINT uiTxEventCode)896 void xTraceTimerPerformanceSystemInfoGet(UINT uiTxEventCode)
897 {
898 	(void)uiTxEventCode;
899 }
900