Skip to main content

freertos_in_rust/
trace.rs

1/*
2 * FreeRTOS Kernel <DEVELOPMENT BRANCH>
3 * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4 *
5 * SPDX-License-Identifier: MIT
6 *
7 * [AMENDMENT] This module provides the trace hook functions for FreeRTOS.
8 * In the original C, these are macros defined in FreeRTOS.h that default
9 * to nothing but can be overridden by the user for tracing/debugging.
10 *
11 * Here we provide them as inline no-op functions. Users can enable tracing
12 * by providing their own implementations via a feature flag (TODO).
13 */
14
15//! Trace Hooks
16//!
17//! FreeRTOS provides extensive tracing hooks that are called at key points
18//! in the kernel. By default, these are no-ops, but they can be overridden
19//! for debugging, profiling, or integration with trace tools like Tracealyzer.
20//!
21//! ## Categories
22//!
23//! - `traceENTER_*` / `traceRETURN_*` - Function entry/exit tracing
24//! - `traceTASK_*` - Task-related events
25//! - `traceQUEUE_*` - Queue operations
26//! - `traceTIMER_*` - Timer events
27//! - `traceEVENT_GROUP_*` - Event group operations
28//! - `traceSTREAM_BUFFER_*` - Stream buffer operations
29//!
30//! ## Usage
31//!
32//! These functions are called from kernel code. To implement custom tracing,
33//! users would need to provide their own trace.rs implementation (TODO: feature flag).
34
35#![allow(unused_variables)]
36
37use crate::kernel::list::{ListItem_t, List_t};
38use crate::types::*;
39
40// =============================================================================
41// List tracing
42// =============================================================================
43
44#[inline(always)]
45pub fn traceENTER_vListInitialise(pxList: *mut List_t) {}
46
47#[inline(always)]
48pub fn traceRETURN_vListInitialise() {}
49
50#[inline(always)]
51pub fn traceENTER_vListInitialiseItem(pxItem: *mut ListItem_t) {}
52
53#[inline(always)]
54pub fn traceRETURN_vListInitialiseItem() {}
55
56#[inline(always)]
57pub fn traceENTER_vListInsertEnd(pxList: *mut List_t, pxNewListItem: *mut ListItem_t) {}
58
59#[inline(always)]
60pub fn traceRETURN_vListInsertEnd() {}
61
62#[inline(always)]
63pub fn traceENTER_vListInsert(pxList: *mut List_t, pxNewListItem: *mut ListItem_t) {}
64
65#[inline(always)]
66pub fn traceRETURN_vListInsert() {}
67
68#[inline(always)]
69pub fn traceENTER_uxListRemove(pxItemToRemove: *mut ListItem_t) {}
70
71#[inline(always)]
72pub fn traceRETURN_uxListRemove(uxNumberOfItems: UBaseType_t) {}
73
74// =============================================================================
75// Task tracing (placeholders for tasks.rs)
76// =============================================================================
77
78#[inline(always)]
79pub fn traceTASK_CREATE(pxNewTCB: *mut core::ffi::c_void) {}
80
81#[inline(always)]
82pub fn traceTASK_CREATE_FAILED() {}
83
84#[inline(always)]
85pub fn traceTASK_DELETE(pxTaskToDelete: *mut core::ffi::c_void) {}
86
87#[inline(always)]
88pub fn traceTASK_DELAY_UNTIL(xTimeToWake: TickType_t) {}
89
90#[inline(always)]
91pub fn traceTASK_DELAY() {}
92
93#[inline(always)]
94pub fn traceTASK_PRIORITY_SET(pxTask: *mut core::ffi::c_void, uxNewPriority: UBaseType_t) {}
95
96#[inline(always)]
97pub fn traceTASK_SUSPEND(pxTaskToSuspend: *mut core::ffi::c_void) {}
98
99#[inline(always)]
100pub fn traceTASK_RESUME(pxTaskToResume: *mut core::ffi::c_void) {}
101
102#[inline(always)]
103pub fn traceTASK_RESUME_FROM_ISR(pxTaskToResume: *mut core::ffi::c_void) {}
104
105#[inline(always)]
106pub fn traceTASK_INCREMENT_TICK(xTickCount: TickType_t) {}
107
108#[inline(always)]
109pub fn traceTASK_SWITCHED_IN() {}
110
111#[inline(always)]
112pub fn traceTASK_SWITCHED_OUT() {}
113
114#[inline(always)]
115pub fn traceTASK_PRIORITY_INHERIT(
116    pxTCBOfMutexHolder: *mut core::ffi::c_void,
117    uxInheritedPriority: UBaseType_t,
118) {
119}
120
121#[inline(always)]
122pub fn traceTASK_PRIORITY_DISINHERIT(
123    pxTCBOfMutexHolder: *mut core::ffi::c_void,
124    uxOriginalPriority: UBaseType_t,
125) {
126}
127
128#[inline(always)]
129pub fn traceTASK_NOTIFY_TAKE_BLOCK(uxIndexToWait: UBaseType_t) {}
130
131#[inline(always)]
132pub fn traceTASK_NOTIFY_TAKE(uxIndexToWait: UBaseType_t) {}
133
134#[inline(always)]
135pub fn traceTASK_NOTIFY_WAIT_BLOCK(uxIndexToWait: UBaseType_t) {}
136
137#[inline(always)]
138pub fn traceTASK_NOTIFY_WAIT(uxIndexToWait: UBaseType_t) {}
139
140#[inline(always)]
141pub fn traceTASK_NOTIFY(uxIndexToNotify: UBaseType_t) {}
142
143#[inline(always)]
144pub fn traceTASK_NOTIFY_FROM_ISR(uxIndexToNotify: UBaseType_t) {}
145
146#[inline(always)]
147pub fn traceTASK_NOTIFY_GIVE_FROM_ISR(uxIndexToNotify: UBaseType_t) {}
148
149// =============================================================================
150// Queue tracing (placeholders for queue.rs)
151// =============================================================================
152
153#[inline(always)]
154pub fn traceQUEUE_CREATE(pxNewQueue: *mut core::ffi::c_void) {}
155
156#[inline(always)]
157pub fn traceQUEUE_CREATE_FAILED(ucQueueType: u8) {}
158
159#[inline(always)]
160pub fn traceCREATE_MUTEX(pxNewQueue: *mut core::ffi::c_void) {}
161
162#[inline(always)]
163pub fn traceCREATE_MUTEX_FAILED() {}
164
165#[inline(always)]
166pub fn traceGIVE_MUTEX_RECURSIVE(pxMutex: *mut core::ffi::c_void) {}
167
168#[inline(always)]
169pub fn traceGIVE_MUTEX_RECURSIVE_FAILED(pxMutex: *mut core::ffi::c_void) {}
170
171#[inline(always)]
172pub fn traceTAKE_MUTEX_RECURSIVE(pxMutex: *mut core::ffi::c_void) {}
173
174#[inline(always)]
175pub fn traceTAKE_MUTEX_RECURSIVE_FAILED(pxMutex: *mut core::ffi::c_void) {}
176
177#[inline(always)]
178pub fn traceCREATE_COUNTING_SEMAPHORE() {}
179
180#[inline(always)]
181pub fn traceCREATE_COUNTING_SEMAPHORE_FAILED() {}
182
183#[inline(always)]
184pub fn traceQUEUE_SEND(pxQueue: *mut core::ffi::c_void) {}
185
186#[inline(always)]
187pub fn traceQUEUE_SEND_FAILED(pxQueue: *mut core::ffi::c_void) {}
188
189#[inline(always)]
190pub fn traceQUEUE_RECEIVE(pxQueue: *mut core::ffi::c_void) {}
191
192#[inline(always)]
193pub fn traceQUEUE_PEEK(pxQueue: *mut core::ffi::c_void) {}
194
195#[inline(always)]
196pub fn traceQUEUE_PEEK_FAILED(pxQueue: *mut core::ffi::c_void) {}
197
198#[inline(always)]
199pub fn traceQUEUE_PEEK_FROM_ISR(pxQueue: *mut core::ffi::c_void) {}
200
201#[inline(always)]
202pub fn traceQUEUE_RECEIVE_FAILED(pxQueue: *mut core::ffi::c_void) {}
203
204#[inline(always)]
205pub fn traceQUEUE_SEND_FROM_ISR(pxQueue: *mut core::ffi::c_void) {}
206
207#[inline(always)]
208pub fn traceQUEUE_SEND_FROM_ISR_FAILED(pxQueue: *mut core::ffi::c_void) {}
209
210#[inline(always)]
211pub fn traceQUEUE_RECEIVE_FROM_ISR(pxQueue: *mut core::ffi::c_void) {}
212
213#[inline(always)]
214pub fn traceQUEUE_RECEIVE_FROM_ISR_FAILED(pxQueue: *mut core::ffi::c_void) {}
215
216#[inline(always)]
217pub fn traceQUEUE_PEEK_FROM_ISR_FAILED(pxQueue: *mut core::ffi::c_void) {}
218
219#[inline(always)]
220pub fn traceQUEUE_DELETE(pxQueue: *mut core::ffi::c_void) {}
221
222#[inline(always)]
223pub fn traceBLOCKING_ON_QUEUE_RECEIVE(pxQueue: *mut core::ffi::c_void) {}
224
225#[inline(always)]
226pub fn traceBLOCKING_ON_QUEUE_PEEK(pxQueue: *mut core::ffi::c_void) {}
227
228#[inline(always)]
229pub fn traceBLOCKING_ON_QUEUE_SEND(pxQueue: *mut core::ffi::c_void) {}
230
231#[inline(always)]
232pub fn traceQUEUE_REGISTRY_ADD(pxQueue: *mut core::ffi::c_void, pcQueueName: *const u8) {}
233
234// =============================================================================
235// Timer tracing (placeholders for timers.rs)
236// =============================================================================
237
238#[inline(always)]
239pub fn traceTIMER_CREATE(pxNewTimer: *mut core::ffi::c_void) {}
240
241#[inline(always)]
242pub fn traceTIMER_CREATE_FAILED() {}
243
244#[inline(always)]
245pub fn traceTIMER_COMMAND_SEND(
246    xTimer: *mut core::ffi::c_void,
247    xMessageID: BaseType_t,
248    xMessageValueValue: TickType_t,
249    xReturn: BaseType_t,
250) {
251}
252
253#[inline(always)]
254pub fn traceTIMER_EXPIRED(pxTimer: *mut core::ffi::c_void) {}
255
256#[inline(always)]
257pub fn traceTIMER_COMMAND_RECEIVED(
258    pxTimer: *mut core::ffi::c_void,
259    xMessageID: BaseType_t,
260    xMessageValue: TickType_t,
261) {
262}
263
264// =============================================================================
265// Event group tracing (placeholders for event_groups.rs)
266// =============================================================================
267
268#[inline(always)]
269pub fn traceEVENT_GROUP_CREATE(pxEventGroup: *mut core::ffi::c_void) {}
270
271#[inline(always)]
272pub fn traceEVENT_GROUP_CREATE_FAILED() {}
273
274#[inline(always)]
275pub fn traceEVENT_GROUP_SYNC_BLOCK(
276    pxEventGroup: *mut core::ffi::c_void,
277    uxBitsToSet: UBaseType_t,
278    uxBitsToWaitFor: UBaseType_t,
279) {
280}
281
282#[inline(always)]
283pub fn traceEVENT_GROUP_SYNC_END(
284    pxEventGroup: *mut core::ffi::c_void,
285    uxBitsToSet: UBaseType_t,
286    uxBitsToWaitFor: UBaseType_t,
287    xTimeoutOccurred: BaseType_t,
288) {
289}
290
291#[inline(always)]
292pub fn traceEVENT_GROUP_WAIT_BITS_BLOCK(
293    pxEventGroup: *mut core::ffi::c_void,
294    uxBitsToWaitFor: UBaseType_t,
295) {
296}
297
298#[inline(always)]
299pub fn traceEVENT_GROUP_WAIT_BITS_END(
300    pxEventGroup: *mut core::ffi::c_void,
301    uxBitsToWaitFor: UBaseType_t,
302    xTimeoutOccurred: BaseType_t,
303) {
304}
305
306#[inline(always)]
307pub fn traceEVENT_GROUP_CLEAR_BITS(
308    pxEventGroup: *mut core::ffi::c_void,
309    uxBitsToClear: UBaseType_t,
310) {
311}
312
313#[inline(always)]
314pub fn traceEVENT_GROUP_CLEAR_BITS_FROM_ISR(
315    pxEventGroup: *mut core::ffi::c_void,
316    uxBitsToClear: UBaseType_t,
317) {
318}
319
320#[inline(always)]
321pub fn traceEVENT_GROUP_SET_BITS(pxEventGroup: *mut core::ffi::c_void, uxBitsToSet: UBaseType_t) {}
322
323#[inline(always)]
324pub fn traceEVENT_GROUP_SET_BITS_FROM_ISR(
325    pxEventGroup: *mut core::ffi::c_void,
326    uxBitsToSet: UBaseType_t,
327) {
328}
329
330#[inline(always)]
331pub fn traceEVENT_GROUP_DELETE(pxEventGroup: *mut core::ffi::c_void) {}
332
333// =============================================================================
334// Stream buffer tracing (placeholders for stream_buffer.rs)
335// =============================================================================
336
337#[inline(always)]
338pub fn traceSTREAM_BUFFER_CREATE(
339    pxStreamBuffer: *mut core::ffi::c_void,
340    xIsMessageBuffer: BaseType_t,
341) {
342}
343
344#[inline(always)]
345pub fn traceSTREAM_BUFFER_CREATE_FAILED(xIsMessageBuffer: BaseType_t) {}
346
347#[inline(always)]
348pub fn traceSTREAM_BUFFER_CREATE_STATIC_FAILED(
349    xReturn: *mut core::ffi::c_void,
350    xIsMessageBuffer: BaseType_t,
351) {
352}
353
354#[inline(always)]
355pub fn traceSTREAM_BUFFER_DELETE(pxStreamBuffer: *mut core::ffi::c_void) {}
356
357#[inline(always)]
358pub fn traceSTREAM_BUFFER_RESET(pxStreamBuffer: *mut core::ffi::c_void) {}
359
360#[inline(always)]
361pub fn traceSTREAM_BUFFER_SEND(pxStreamBuffer: *mut core::ffi::c_void, xBytesSent: usize) {}
362
363#[inline(always)]
364pub fn traceSTREAM_BUFFER_SEND_FAILED(pxStreamBuffer: *mut core::ffi::c_void) {}
365
366#[inline(always)]
367pub fn traceSTREAM_BUFFER_SEND_FROM_ISR(pxStreamBuffer: *mut core::ffi::c_void, xBytesSent: usize) {
368}
369
370#[inline(always)]
371pub fn traceSTREAM_BUFFER_RECEIVE(pxStreamBuffer: *mut core::ffi::c_void, xReceivedLength: usize) {}
372
373#[inline(always)]
374pub fn traceSTREAM_BUFFER_RECEIVE_FAILED(pxStreamBuffer: *mut core::ffi::c_void) {}
375
376#[inline(always)]
377pub fn traceSTREAM_BUFFER_RECEIVE_FROM_ISR(
378    pxStreamBuffer: *mut core::ffi::c_void,
379    xReceivedLength: usize,
380) {
381}
382
383#[inline(always)]
384pub fn traceBLOCKING_ON_STREAM_BUFFER_SEND(pxStreamBuffer: *mut core::ffi::c_void) {}
385
386#[inline(always)]
387pub fn traceBLOCKING_ON_STREAM_BUFFER_RECEIVE(pxStreamBuffer: *mut core::ffi::c_void) {}
388
389// =============================================================================
390// ISR tracing
391// =============================================================================
392
393#[inline(always)]
394pub fn traceISR_ENTER() {}
395
396#[inline(always)]
397pub fn traceISR_EXIT() {}
398
399#[inline(always)]
400pub fn traceISR_EXIT_TO_SCHEDULER() {}
401
402// =============================================================================
403// Scheduler tracing
404// =============================================================================
405
406#[inline(always)]
407pub fn traceSCHEDULER_STARTED() {}
408
409#[inline(always)]
410pub fn traceSCHEDULER_STOPPED() {}
411
412#[inline(always)]
413pub fn traceSCHEDULER_SUSPENDED() {}
414
415#[inline(always)]
416pub fn traceSCHEDULER_RESUMED() {}
417
418// =============================================================================
419// Idle task tracing
420// =============================================================================
421
422#[inline(always)]
423pub fn traceIDLE_TASK_STARTED() {}
424
425// =============================================================================
426// Low power / tickless idle tracing
427// =============================================================================
428
429#[inline(always)]
430pub fn traceLOW_POWER_IDLE_BEGIN() {}
431
432#[inline(always)]
433pub fn traceLOW_POWER_IDLE_END() {}
434
435#[inline(always)]
436pub fn traceINCREASE_TICK_COUNT(_xTicksToJump: TickType_t) {}
437
438// =============================================================================
439// Memory allocation tracing
440// =============================================================================
441
442#[inline(always)]
443pub fn traceMALLOC(pvAddress: *mut core::ffi::c_void, uiSize: usize) {}
444
445#[inline(always)]
446pub fn traceFREE(pvAddress: *mut core::ffi::c_void, uiSize: usize) {}
447
448// =============================================================================
449// Pend function call tracing
450// =============================================================================
451
452#[inline(always)]
453pub fn tracePEND_FUNC_CALL(
454    xFunctionToPend: *mut core::ffi::c_void,
455    pvParameter1: *mut core::ffi::c_void,
456    ulParameter2: u32,
457    xReturn: BaseType_t,
458) {
459}
460
461#[inline(always)]
462pub fn tracePEND_FUNC_CALL_FROM_ISR(
463    xFunctionToPend: *mut core::ffi::c_void,
464    pvParameter1: *mut core::ffi::c_void,
465    ulParameter2: u32,
466    xReturn: BaseType_t,
467) {
468}
469
470// =============================================================================
471// Queue set tracing
472// =============================================================================
473
474#[inline(always)]
475pub fn traceQUEUE_SET_SEND(pxQueueSet: *mut core::ffi::c_void) {}
476
477// =============================================================================
478// Moved task to ready state tracing
479// =============================================================================
480
481#[inline(always)]
482pub fn traceMOVED_TASK_TO_READY_STATE(pxTCB: *mut core::ffi::c_void) {}
483
484#[inline(always)]
485pub fn tracePOST_MOVED_TASK_TO_READY_STATE(pxTCB: *mut core::ffi::c_void) {}
486
487#[inline(always)]
488pub fn traceMOVED_TASK_TO_DELAYED_LIST() {}
489
490#[inline(always)]
491pub fn traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST() {}
492
493// =============================================================================
494// Trace Macros
495// =============================================================================
496// [AMENDMENT] These macros provide no-op stubs that can be replaced with
497// actual tracing implementations. They match the FreeRTOS trace macro pattern.
498
499// Timer tracing macros
500#[macro_export]
501macro_rules! traceENTER_xTimerCreateTimerTask {
502    () => {};
503}
504
505#[macro_export]
506macro_rules! traceRETURN_xTimerCreateTimerTask {
507    ($xReturn:expr) => {};
508}
509
510#[macro_export]
511macro_rules! traceENTER_xTimerCreate {
512    ($pcTimerName:expr, $xTimerPeriodInTicks:expr, $xAutoReload:expr, $pvTimerID:expr, $pxCallbackFunction:expr) => {};
513}
514
515#[macro_export]
516macro_rules! traceRETURN_xTimerCreate {
517    ($pxNewTimer:expr) => {};
518}
519
520#[macro_export]
521macro_rules! traceENTER_xTimerCreateStatic {
522    ($pcTimerName:expr, $xTimerPeriodInTicks:expr, $xAutoReload:expr, $pvTimerID:expr, $pxCallbackFunction:expr, $pxTimerBuffer:expr) => {};
523}
524
525#[macro_export]
526macro_rules! traceRETURN_xTimerCreateStatic {
527    ($pxNewTimer:expr) => {};
528}
529
530#[macro_export]
531macro_rules! traceENTER_xTimerGenericCommandFromTask {
532    ($xTimer:expr, $xCommandID:expr, $xOptionalValue:expr, $pxHigherPriorityTaskWoken:expr, $xTicksToWait:expr) => {};
533}
534
535#[macro_export]
536macro_rules! traceRETURN_xTimerGenericCommandFromTask {
537    ($xReturn:expr) => {};
538}
539
540#[macro_export]
541macro_rules! traceENTER_xTimerGenericCommandFromISR {
542    ($xTimer:expr, $xCommandID:expr, $xOptionalValue:expr, $pxHigherPriorityTaskWoken:expr, $xTicksToWait:expr) => {};
543}
544
545#[macro_export]
546macro_rules! traceRETURN_xTimerGenericCommandFromISR {
547    ($xReturn:expr) => {};
548}
549
550#[macro_export]
551macro_rules! traceTIMER_COMMAND_SEND {
552    ($xTimer:expr, $xCommandID:expr, $xOptionalValue:expr, $xReturn:expr) => {};
553}
554
555#[macro_export]
556macro_rules! traceENTER_xTimerGetTimerDaemonTaskHandle {
557    () => {};
558}
559
560#[macro_export]
561macro_rules! traceRETURN_xTimerGetTimerDaemonTaskHandle {
562    ($xTimerTaskHandle:expr) => {};
563}
564
565#[macro_export]
566macro_rules! traceENTER_xTimerGetPeriod {
567    ($xTimer:expr) => {};
568}
569
570#[macro_export]
571macro_rules! traceRETURN_xTimerGetPeriod {
572    ($xReturn:expr) => {};
573}
574
575#[macro_export]
576macro_rules! traceENTER_vTimerSetReloadMode {
577    ($xTimer:expr, $xAutoReload:expr) => {};
578}
579
580#[macro_export]
581macro_rules! traceRETURN_vTimerSetReloadMode {
582    () => {};
583}
584
585#[macro_export]
586macro_rules! traceENTER_xTimerGetReloadMode {
587    ($xTimer:expr) => {};
588}
589
590#[macro_export]
591macro_rules! traceRETURN_xTimerGetReloadMode {
592    ($xReturn:expr) => {};
593}
594
595#[macro_export]
596macro_rules! traceENTER_uxTimerGetReloadMode {
597    ($xTimer:expr) => {};
598}
599
600#[macro_export]
601macro_rules! traceRETURN_uxTimerGetReloadMode {
602    ($uxReturn:expr) => {};
603}
604
605#[macro_export]
606macro_rules! traceENTER_xTimerGetExpiryTime {
607    ($xTimer:expr) => {};
608}
609
610#[macro_export]
611macro_rules! traceRETURN_xTimerGetExpiryTime {
612    ($xReturn:expr) => {};
613}
614
615#[macro_export]
616macro_rules! traceENTER_pcTimerGetName {
617    ($xTimer:expr) => {};
618}
619
620#[macro_export]
621macro_rules! traceRETURN_pcTimerGetName {
622    ($pcName:expr) => {};
623}
624
625#[macro_export]
626macro_rules! traceENTER_xTimerIsTimerActive {
627    ($xTimer:expr) => {};
628}
629
630#[macro_export]
631macro_rules! traceRETURN_xTimerIsTimerActive {
632    ($xReturn:expr) => {};
633}
634
635#[macro_export]
636macro_rules! traceENTER_pvTimerGetTimerID {
637    ($xTimer:expr) => {};
638}
639
640#[macro_export]
641macro_rules! traceRETURN_pvTimerGetTimerID {
642    ($pvReturn:expr) => {};
643}
644
645#[macro_export]
646macro_rules! traceENTER_vTimerSetTimerID {
647    ($xTimer:expr, $pvNewID:expr) => {};
648}
649
650#[macro_export]
651macro_rules! traceRETURN_vTimerSetTimerID {
652    () => {};
653}
654
655#[macro_export]
656macro_rules! traceENTER_xTimerGetStaticBuffer {
657    ($xTimer:expr, $ppxTimerBuffer:expr) => {};
658}
659
660#[macro_export]
661macro_rules! traceRETURN_xTimerGetStaticBuffer {
662    ($xReturn:expr) => {};
663}
664
665#[macro_export]
666macro_rules! traceENTER_uxTimerGetTimerNumber {
667    ($xTimer:expr) => {};
668}
669
670#[macro_export]
671macro_rules! traceRETURN_uxTimerGetTimerNumber {
672    ($uxReturn:expr) => {};
673}
674
675#[macro_export]
676macro_rules! traceENTER_vTimerSetTimerNumber {
677    ($xTimer:expr, $uxTimerNumber:expr) => {};
678}
679
680#[macro_export]
681macro_rules! traceRETURN_vTimerSetTimerNumber {
682    () => {};
683}
684
685#[macro_export]
686macro_rules! traceENTER_xTimerPendFunctionCallFromISR {
687    ($xFunctionToPend:expr, $pvParameter1:expr, $ulParameter2:expr, $pxHigherPriorityTaskWoken:expr) => {};
688}
689
690#[macro_export]
691macro_rules! traceRETURN_xTimerPendFunctionCallFromISR {
692    ($xReturn:expr) => {};
693}
694
695#[macro_export]
696macro_rules! traceENTER_xTimerPendFunctionCall {
697    ($xFunctionToPend:expr, $pvParameter1:expr, $ulParameter2:expr, $xTicksToWait:expr) => {};
698}
699
700#[macro_export]
701macro_rules! traceRETURN_xTimerPendFunctionCall {
702    ($xReturn:expr) => {};
703}
704
705#[macro_export]
706macro_rules! traceTIMER_CREATE {
707    ($pxTimer:expr) => {};
708}
709
710#[macro_export]
711macro_rules! traceTIMER_EXPIRED {
712    ($pxTimer:expr) => {};
713}
714
715#[macro_export]
716macro_rules! traceTIMER_COMMAND_RECEIVED {
717    ($pxTimer:expr, $xMessageID:expr, $xMessageValue:expr) => {};
718}
719
720#[macro_export]
721macro_rules! tracePEND_FUNC_CALL_FROM_ISR {
722    ($xFunctionToPend:expr, $pvParameter1:expr, $ulParameter2:expr, $xReturn:expr) => {};
723}
724
725#[macro_export]
726macro_rules! tracePEND_FUNC_CALL {
727    ($xFunctionToPend:expr, $pvParameter1:expr, $ulParameter2:expr, $xReturn:expr) => {};
728}