1 /*
2  * FreeRTOS Kernel V11.1.0
3  * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4  *
5  * SPDX-License-Identifier: MIT
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a copy of
8  * this software and associated documentation files (the "Software"), to deal in
9  * the Software without restriction, including without limitation the rights to
10  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11  * the Software, and to permit persons to whom the Software is furnished to do so,
12  * subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in all
15  * copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  *
24  * https://www.FreeRTOS.org
25  * https://github.com/FreeRTOS
26  *
27  */
28 
29 #ifndef INC_FREERTOS_H
30 #define INC_FREERTOS_H
31 
32 /*
33  * Include the generic headers required for the FreeRTOS port being used.
34  */
35 #include <stddef.h>
36 
37 /*
38  * If stdint.h cannot be located then:
39  *   + If using GCC ensure the -nostdint options is *not* being used.
40  *   + Ensure the project's include path includes the directory in which your
41  *     compiler stores stdint.h.
42  *   + Set any compiler options necessary for it to support C99, as technically
43  *     stdint.h is only mandatory with C99 (FreeRTOS does not require C99 in any
44  *     other way).
45  *   + The FreeRTOS download includes a simple stdint.h definition that can be
46  *     used in cases where none is provided by the compiler.  The files only
47  *     contains the typedefs required to build FreeRTOS.  Read the instructions
48  *     in FreeRTOS/source/stdint.readme for more information.
49  */
50 #include <stdint.h> /* READ COMMENT ABOVE. */
51 
52 /* *INDENT-OFF* */
53 #ifdef __cplusplus
54     extern "C" {
55 #endif
56 /* *INDENT-ON* */
57 
58 /* Acceptable values for configTICK_TYPE_WIDTH_IN_BITS. */
59 #define TICK_TYPE_WIDTH_16_BITS    0
60 #define TICK_TYPE_WIDTH_32_BITS    1
61 #define TICK_TYPE_WIDTH_64_BITS    2
62 
63 /* Application specific configuration options. */
64 #include "FreeRTOSConfig.h"
65 
66 #if !defined( configUSE_16_BIT_TICKS ) && !defined( configTICK_TYPE_WIDTH_IN_BITS )
67     #error Missing definition:  One of configUSE_16_BIT_TICKS and configTICK_TYPE_WIDTH_IN_BITS must be defined in FreeRTOSConfig.h.  See the Configuration section of the FreeRTOS API documentation for details.
68 #endif
69 
70 #if defined( configUSE_16_BIT_TICKS ) && defined( configTICK_TYPE_WIDTH_IN_BITS )
71     #error Only one of configUSE_16_BIT_TICKS and configTICK_TYPE_WIDTH_IN_BITS must be defined in FreeRTOSConfig.h.  See the Configuration section of the FreeRTOS API documentation for details.
72 #endif
73 
74 /* Define configTICK_TYPE_WIDTH_IN_BITS according to the
75  * value of configUSE_16_BIT_TICKS for backward compatibility. */
76 #ifndef configTICK_TYPE_WIDTH_IN_BITS
77     #if ( configUSE_16_BIT_TICKS == 1 )
78         #define configTICK_TYPE_WIDTH_IN_BITS    TICK_TYPE_WIDTH_16_BITS
79     #else
80         #define configTICK_TYPE_WIDTH_IN_BITS    TICK_TYPE_WIDTH_32_BITS
81     #endif
82 #endif
83 
84 /* Set configUSE_MPU_WRAPPERS_V1 to 1 to use MPU wrappers v1. */
85 #ifndef configUSE_MPU_WRAPPERS_V1
86     #define configUSE_MPU_WRAPPERS_V1    0
87 #endif
88 
89 /* Set configENABLE_ACCESS_CONTROL_LIST to 1 to enable access control list support. */
90 #ifndef configENABLE_ACCESS_CONTROL_LIST
91     #define configENABLE_ACCESS_CONTROL_LIST    0
92 #endif
93 
94 /* Set default value of configNUMBER_OF_CORES to 1 to use single core FreeRTOS. */
95 #ifndef configNUMBER_OF_CORES
96     #define configNUMBER_OF_CORES    1
97 #endif
98 
99 #ifndef configUSE_MALLOC_FAILED_HOOK
100     #define configUSE_MALLOC_FAILED_HOOK    0
101 #endif
102 
103 /* Basic FreeRTOS definitions. */
104 #include "projdefs.h"
105 
106 /* Definitions specific to the port being used. */
107 #include "portable.h"
108 
109 /* Must be defaulted before configUSE_NEWLIB_REENTRANT is used below. */
110 #ifndef configUSE_NEWLIB_REENTRANT
111     #define configUSE_NEWLIB_REENTRANT    0
112 #endif
113 
114 /* Required if struct _reent is used. */
115 #if ( configUSE_NEWLIB_REENTRANT == 1 )
116 
117     #include "newlib-freertos.h"
118 
119 #endif /* if ( configUSE_NEWLIB_REENTRANT == 1 ) */
120 
121 /* Must be defaulted before configUSE_PICOLIBC_TLS is used below. */
122 #ifndef configUSE_PICOLIBC_TLS
123     #define configUSE_PICOLIBC_TLS    0
124 #endif
125 
126 #if ( configUSE_PICOLIBC_TLS == 1 )
127 
128     #include "picolibc-freertos.h"
129 
130 #endif /* if ( configUSE_PICOLIBC_TLS == 1 ) */
131 
132 #ifndef configUSE_C_RUNTIME_TLS_SUPPORT
133     #define configUSE_C_RUNTIME_TLS_SUPPORT    0
134 #endif
135 
136 #if ( configUSE_C_RUNTIME_TLS_SUPPORT == 1 )
137 
138     #ifndef configTLS_BLOCK_TYPE
139         #error Missing definition:  configTLS_BLOCK_TYPE must be defined in FreeRTOSConfig.h when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
140     #endif
141 
142     #ifndef configINIT_TLS_BLOCK
143         #error Missing definition:  configINIT_TLS_BLOCK must be defined in FreeRTOSConfig.h when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
144     #endif
145 
146     #ifndef configSET_TLS_BLOCK
147         #error Missing definition:  configSET_TLS_BLOCK must be defined in FreeRTOSConfig.h when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
148     #endif
149 
150     #ifndef configDEINIT_TLS_BLOCK
151         #error Missing definition:  configDEINIT_TLS_BLOCK must be defined in FreeRTOSConfig.h when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
152     #endif
153 #endif /* if ( configUSE_C_RUNTIME_TLS_SUPPORT == 1 ) */
154 
155 /*
156  * Check all the required application specific macros have been defined.
157  * These macros are application specific and (as downloaded) are defined
158  * within FreeRTOSConfig.h.
159  */
160 
161 #ifndef configMINIMAL_STACK_SIZE
162     #error Missing definition:  configMINIMAL_STACK_SIZE must be defined in FreeRTOSConfig.h.  configMINIMAL_STACK_SIZE defines the size (in words) of the stack allocated to the idle task.  Refer to the demo project provided for your port for a suitable value.
163 #endif
164 
165 #ifndef configMAX_PRIORITIES
166     #error Missing definition:  configMAX_PRIORITIES must be defined in FreeRTOSConfig.h.  See the Configuration section of the FreeRTOS API documentation for details.
167 #endif
168 
169 #if configMAX_PRIORITIES < 1
170     #error configMAX_PRIORITIES must be defined to be greater than or equal to 1.
171 #endif
172 
173 #ifndef configUSE_PREEMPTION
174     #error Missing definition:  configUSE_PREEMPTION must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.
175 #endif
176 
177 #ifndef configUSE_IDLE_HOOK
178     #error Missing definition:  configUSE_IDLE_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.
179 #endif
180 
181 #if ( configNUMBER_OF_CORES > 1 )
182     #ifndef configUSE_PASSIVE_IDLE_HOOK
183         #error Missing definition:  configUSE_PASSIVE_IDLE_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.
184     #endif
185 #endif
186 
187 #ifndef configUSE_TICK_HOOK
188     #error Missing definition:  configUSE_TICK_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.
189 #endif
190 
191 #if ( ( configTICK_TYPE_WIDTH_IN_BITS != TICK_TYPE_WIDTH_16_BITS ) && \
192     ( configTICK_TYPE_WIDTH_IN_BITS != TICK_TYPE_WIDTH_32_BITS ) &&   \
193     ( configTICK_TYPE_WIDTH_IN_BITS != TICK_TYPE_WIDTH_64_BITS ) )
194     #error Macro configTICK_TYPE_WIDTH_IN_BITS is defined to incorrect value.  See the Configuration section of the FreeRTOS API documentation for details.
195 #endif
196 
197 #ifndef configUSE_CO_ROUTINES
198     #define configUSE_CO_ROUTINES    0
199 #endif
200 
201 #ifndef INCLUDE_vTaskPrioritySet
202     #define INCLUDE_vTaskPrioritySet    0
203 #endif
204 
205 #ifndef INCLUDE_uxTaskPriorityGet
206     #define INCLUDE_uxTaskPriorityGet    0
207 #endif
208 
209 #ifndef INCLUDE_vTaskDelete
210     #define INCLUDE_vTaskDelete    0
211 #endif
212 
213 #ifndef INCLUDE_vTaskSuspend
214     #define INCLUDE_vTaskSuspend    0
215 #endif
216 
217 #ifdef INCLUDE_xTaskDelayUntil
218     #ifdef INCLUDE_vTaskDelayUntil
219 
220 /* INCLUDE_vTaskDelayUntil was replaced by INCLUDE_xTaskDelayUntil.  Backward
221  * compatibility is maintained if only one or the other is defined, but
222  * there is a conflict if both are defined. */
223         #error INCLUDE_vTaskDelayUntil and INCLUDE_xTaskDelayUntil are both defined.  INCLUDE_vTaskDelayUntil is no longer required and should be removed
224     #endif
225 #endif
226 
227 #ifndef INCLUDE_xTaskDelayUntil
228     #ifdef INCLUDE_vTaskDelayUntil
229 
230 /* If INCLUDE_vTaskDelayUntil is set but INCLUDE_xTaskDelayUntil is not then
231  * the project's FreeRTOSConfig.h probably pre-dates the introduction of
232  * xTaskDelayUntil and setting INCLUDE_xTaskDelayUntil to whatever
233  * INCLUDE_vTaskDelayUntil is set to will ensure backward compatibility.
234  */
235         #define INCLUDE_xTaskDelayUntil    INCLUDE_vTaskDelayUntil
236     #endif
237 #endif
238 
239 #ifndef INCLUDE_xTaskDelayUntil
240     #define INCLUDE_xTaskDelayUntil    0
241 #endif
242 
243 #ifndef INCLUDE_vTaskDelay
244     #define INCLUDE_vTaskDelay    0
245 #endif
246 
247 #ifndef INCLUDE_xTaskGetIdleTaskHandle
248     #define INCLUDE_xTaskGetIdleTaskHandle    0
249 #endif
250 
251 #ifndef INCLUDE_xTaskAbortDelay
252     #define INCLUDE_xTaskAbortDelay    0
253 #endif
254 
255 #ifndef INCLUDE_xQueueGetMutexHolder
256     #define INCLUDE_xQueueGetMutexHolder    0
257 #endif
258 
259 #ifndef INCLUDE_xSemaphoreGetMutexHolder
260     #define INCLUDE_xSemaphoreGetMutexHolder    INCLUDE_xQueueGetMutexHolder
261 #endif
262 
263 #ifndef INCLUDE_xTaskGetHandle
264     #define INCLUDE_xTaskGetHandle    0
265 #endif
266 
267 #ifndef INCLUDE_uxTaskGetStackHighWaterMark
268     #define INCLUDE_uxTaskGetStackHighWaterMark    0
269 #endif
270 
271 #ifndef INCLUDE_uxTaskGetStackHighWaterMark2
272     #define INCLUDE_uxTaskGetStackHighWaterMark2    0
273 #endif
274 
275 #ifndef INCLUDE_eTaskGetState
276     #define INCLUDE_eTaskGetState    0
277 #endif
278 
279 #ifndef INCLUDE_xTaskResumeFromISR
280     #define INCLUDE_xTaskResumeFromISR    1
281 #endif
282 
283 #ifndef INCLUDE_xTimerPendFunctionCall
284     #define INCLUDE_xTimerPendFunctionCall    0
285 #endif
286 
287 #ifndef INCLUDE_xTaskGetSchedulerState
288     #define INCLUDE_xTaskGetSchedulerState    0
289 #endif
290 
291 #ifndef INCLUDE_xTaskGetCurrentTaskHandle
292     #define INCLUDE_xTaskGetCurrentTaskHandle    1
293 #endif
294 
295 #if configUSE_CO_ROUTINES != 0
296     #ifndef configMAX_CO_ROUTINE_PRIORITIES
297         #error configMAX_CO_ROUTINE_PRIORITIES must be greater than or equal to 1.
298     #endif
299 #endif
300 
301 #ifndef configUSE_APPLICATION_TASK_TAG
302     #define configUSE_APPLICATION_TASK_TAG    0
303 #endif
304 
305 #ifndef configNUM_THREAD_LOCAL_STORAGE_POINTERS
306     #define configNUM_THREAD_LOCAL_STORAGE_POINTERS    0
307 #endif
308 
309 #ifndef configUSE_RECURSIVE_MUTEXES
310     #define configUSE_RECURSIVE_MUTEXES    0
311 #endif
312 
313 #ifndef configUSE_MUTEXES
314     #define configUSE_MUTEXES    0
315 #endif
316 
317 #ifndef configUSE_TIMERS
318     #define configUSE_TIMERS    0
319 #endif
320 
321 #ifndef configUSE_EVENT_GROUPS
322     #define configUSE_EVENT_GROUPS    1
323 #endif
324 
325 #ifndef configUSE_STREAM_BUFFERS
326     #define configUSE_STREAM_BUFFERS    1
327 #endif
328 
329 #ifndef configUSE_DAEMON_TASK_STARTUP_HOOK
330     #define configUSE_DAEMON_TASK_STARTUP_HOOK    0
331 #endif
332 
333 #if ( configUSE_DAEMON_TASK_STARTUP_HOOK != 0 )
334     #if ( configUSE_TIMERS == 0 )
335         #error configUSE_DAEMON_TASK_STARTUP_HOOK is set, but the daemon task is not created because configUSE_TIMERS is 0.
336     #endif
337 #endif
338 
339 #ifndef configUSE_COUNTING_SEMAPHORES
340     #define configUSE_COUNTING_SEMAPHORES    0
341 #endif
342 
343 #ifndef configUSE_TASK_PREEMPTION_DISABLE
344     #define configUSE_TASK_PREEMPTION_DISABLE    0
345 #endif
346 
347 #ifndef configUSE_ALTERNATIVE_API
348     #define configUSE_ALTERNATIVE_API    0
349 #endif
350 
351 #ifndef portCRITICAL_NESTING_IN_TCB
352     #define portCRITICAL_NESTING_IN_TCB    0
353 #endif
354 
355 #ifndef configMAX_TASK_NAME_LEN
356     #define configMAX_TASK_NAME_LEN    16
357 #endif
358 
359 #ifndef configIDLE_SHOULD_YIELD
360     #define configIDLE_SHOULD_YIELD    1
361 #endif
362 
363 #if configMAX_TASK_NAME_LEN < 1
364     #error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h
365 #endif
366 
367 #ifndef configASSERT
368     #define configASSERT( x )
369     #define configASSERT_DEFINED    0
370 #else
371     #define configASSERT_DEFINED    1
372 #endif
373 
374 /* configPRECONDITION should be defined as configASSERT.
375  * The CBMC proofs need a way to track assumptions and assertions.
376  * A configPRECONDITION statement should express an implicit invariant or
377  * assumption made.  A configASSERT statement should express an invariant that must
378  * hold explicit before calling the code. */
379 #ifndef configPRECONDITION
380     #define configPRECONDITION( X )    configASSERT( X )
381     #define configPRECONDITION_DEFINED    0
382 #else
383     #define configPRECONDITION_DEFINED    1
384 #endif
385 
386 #ifndef configCHECK_HANDLER_INSTALLATION
387     #define configCHECK_HANDLER_INSTALLATION    1
388 #else
389 
390 /* The application has explicitly defined configCHECK_HANDLER_INSTALLATION
391  * to 1. The checks requires configASSERT() to be defined. */
392     #if ( ( configCHECK_HANDLER_INSTALLATION == 1 ) && ( configASSERT_DEFINED == 0 ) )
393         #error You must define configASSERT() when configCHECK_HANDLER_INSTALLATION is 1.
394     #endif
395 #endif
396 
397 #ifndef portMEMORY_BARRIER
398     #define portMEMORY_BARRIER()
399 #endif
400 
401 #ifndef portSOFTWARE_BARRIER
402     #define portSOFTWARE_BARRIER()
403 #endif
404 
405 #ifndef configRUN_MULTIPLE_PRIORITIES
406     #define configRUN_MULTIPLE_PRIORITIES    0
407 #endif
408 
409 #ifndef portGET_CORE_ID
410 
411     #if ( configNUMBER_OF_CORES == 1 )
412         #define portGET_CORE_ID()    0
413     #else
414         #error configNUMBER_OF_CORES is set to more than 1 then portGET_CORE_ID must also be defined.
415     #endif /* configNUMBER_OF_CORES */
416 
417 #endif /* portGET_CORE_ID */
418 
419 #ifndef portYIELD_CORE
420 
421     #if ( configNUMBER_OF_CORES == 1 )
422         #define portYIELD_CORE( x )    portYIELD()
423     #else
424         #error configNUMBER_OF_CORES is set to more than 1 then portYIELD_CORE must also be defined.
425     #endif /* configNUMBER_OF_CORES */
426 
427 #endif /* portYIELD_CORE */
428 
429 #ifndef portSET_INTERRUPT_MASK
430 
431     #if ( configNUMBER_OF_CORES > 1 )
432         #error portSET_INTERRUPT_MASK is required in SMP
433     #endif
434 
435 #endif /* portSET_INTERRUPT_MASK */
436 
437 #ifndef portCLEAR_INTERRUPT_MASK
438 
439     #if ( configNUMBER_OF_CORES > 1 )
440         #error portCLEAR_INTERRUPT_MASK is required in SMP
441     #endif
442 
443 #endif /* portCLEAR_INTERRUPT_MASK */
444 
445 #ifndef portRELEASE_TASK_LOCK
446 
447     #if ( configNUMBER_OF_CORES == 1 )
448         #define portRELEASE_TASK_LOCK()
449     #else
450         #error portRELEASE_TASK_LOCK is required in SMP
451     #endif
452 
453 #endif /* portRELEASE_TASK_LOCK */
454 
455 #ifndef portGET_TASK_LOCK
456 
457     #if ( configNUMBER_OF_CORES == 1 )
458         #define portGET_TASK_LOCK()
459     #else
460         #error portGET_TASK_LOCK is required in SMP
461     #endif
462 
463 #endif /* portGET_TASK_LOCK */
464 
465 #ifndef portRELEASE_ISR_LOCK
466 
467     #if ( configNUMBER_OF_CORES == 1 )
468         #define portRELEASE_ISR_LOCK()
469     #else
470         #error portRELEASE_ISR_LOCK is required in SMP
471     #endif
472 
473 #endif /* portRELEASE_ISR_LOCK */
474 
475 #ifndef portGET_ISR_LOCK
476 
477     #if ( configNUMBER_OF_CORES == 1 )
478         #define portGET_ISR_LOCK()
479     #else
480         #error portGET_ISR_LOCK is required in SMP
481     #endif
482 
483 #endif /* portGET_ISR_LOCK */
484 
485 #ifndef portENTER_CRITICAL_FROM_ISR
486 
487     #if ( configNUMBER_OF_CORES > 1 )
488         #error portENTER_CRITICAL_FROM_ISR is required in SMP
489     #endif
490 
491 #endif
492 
493 #ifndef portEXIT_CRITICAL_FROM_ISR
494 
495     #if ( configNUMBER_OF_CORES > 1 )
496         #error portEXIT_CRITICAL_FROM_ISR is required in SMP
497     #endif
498 
499 #endif
500 
501 #ifndef configUSE_CORE_AFFINITY
502     #define configUSE_CORE_AFFINITY    0
503 #endif /* configUSE_CORE_AFFINITY */
504 
505 #if ( ( configNUMBER_OF_CORES > 1 ) && ( configUSE_CORE_AFFINITY == 1 ) )
506     #ifndef configTASK_DEFAULT_CORE_AFFINITY
507         #define configTASK_DEFAULT_CORE_AFFINITY    tskNO_AFFINITY
508     #endif
509 #endif
510 
511 #ifndef configUSE_PASSIVE_IDLE_HOOK
512     #define configUSE_PASSIVE_IDLE_HOOK    0
513 #endif /* configUSE_PASSIVE_IDLE_HOOK */
514 
515 /* The timers module relies on xTaskGetSchedulerState(). */
516 #if configUSE_TIMERS == 1
517 
518     #ifndef configTIMER_TASK_PRIORITY
519         #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_PRIORITY must also be defined.
520     #endif /* configTIMER_TASK_PRIORITY */
521 
522     #ifndef configTIMER_QUEUE_LENGTH
523         #error If configUSE_TIMERS is set to 1 then configTIMER_QUEUE_LENGTH must also be defined.
524     #endif /* configTIMER_QUEUE_LENGTH */
525 
526     #ifndef configTIMER_TASK_STACK_DEPTH
527         #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_STACK_DEPTH must also be defined.
528     #endif /* configTIMER_TASK_STACK_DEPTH */
529 
530     #ifndef portTIMER_CALLBACK_ATTRIBUTE
531         #define portTIMER_CALLBACK_ATTRIBUTE
532     #endif /* portTIMER_CALLBACK_ATTRIBUTE */
533 
534 #endif /* configUSE_TIMERS */
535 
536 #ifndef portHAS_NESTED_INTERRUPTS
537     #if defined( portSET_INTERRUPT_MASK_FROM_ISR ) && defined( portCLEAR_INTERRUPT_MASK_FROM_ISR )
538         #define portHAS_NESTED_INTERRUPTS    1
539     #else
540         #define portHAS_NESTED_INTERRUPTS    0
541     #endif
542 #endif
543 
544 #ifndef portSET_INTERRUPT_MASK_FROM_ISR
545     #if ( portHAS_NESTED_INTERRUPTS == 1 )
546         #error portSET_INTERRUPT_MASK_FROM_ISR must be defined for ports that support nested interrupts (i.e. portHAS_NESTED_INTERRUPTS is set to 1)
547     #else
548         #define portSET_INTERRUPT_MASK_FROM_ISR()    0
549     #endif
550 #else
551     #if ( portHAS_NESTED_INTERRUPTS == 0 )
552         #error portSET_INTERRUPT_MASK_FROM_ISR must not be defined for ports that do not support nested interrupts (i.e. portHAS_NESTED_INTERRUPTS is set to 0)
553     #endif
554 #endif
555 
556 #ifndef portCLEAR_INTERRUPT_MASK_FROM_ISR
557     #if ( portHAS_NESTED_INTERRUPTS == 1 )
558         #error portCLEAR_INTERRUPT_MASK_FROM_ISR must be defined for ports that support nested interrupts  (i.e. portHAS_NESTED_INTERRUPTS is set to 1)
559     #else
560         #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusValue )    ( void ) ( uxSavedStatusValue )
561     #endif
562 #else
563     #if ( portHAS_NESTED_INTERRUPTS == 0 )
564         #error portCLEAR_INTERRUPT_MASK_FROM_ISR must not be defined for ports that do not support nested interrupts (i.e. portHAS_NESTED_INTERRUPTS is set to 0)
565     #endif
566 #endif
567 
568 #ifndef portCLEAN_UP_TCB
569     #define portCLEAN_UP_TCB( pxTCB )    ( void ) ( pxTCB )
570 #endif
571 
572 #ifndef portPRE_TASK_DELETE_HOOK
573     #define portPRE_TASK_DELETE_HOOK( pvTaskToDelete, pxYieldPending )
574 #endif
575 
576 #ifndef portSETUP_TCB
577     #define portSETUP_TCB( pxTCB )    ( void ) ( pxTCB )
578 #endif
579 
580 #ifndef portTASK_SWITCH_HOOK
581     #define portTASK_SWITCH_HOOK( pxTCB )    ( void ) ( pxTCB )
582 #endif
583 
584 #ifndef configQUEUE_REGISTRY_SIZE
585     #define configQUEUE_REGISTRY_SIZE    0U
586 #endif
587 
588 #if ( configQUEUE_REGISTRY_SIZE < 1 )
589     #define vQueueAddToRegistry( xQueue, pcName )
590     #define vQueueUnregisterQueue( xQueue )
591     #define pcQueueGetName( xQueue )
592 #endif
593 
594 #ifndef configUSE_MINI_LIST_ITEM
595     #define configUSE_MINI_LIST_ITEM    1
596 #endif
597 
598 #ifndef portPOINTER_SIZE_TYPE
599     #define portPOINTER_SIZE_TYPE    uint32_t
600 #endif
601 
602 /* Remove any unused trace macros. */
603 #ifndef traceSTART
604 
605 /* Used to perform any necessary initialisation - for example, open a file
606  * into which trace is to be written. */
607     #define traceSTART()
608 #endif
609 
610 #ifndef traceEND
611 
612 /* Use to close a trace, for example close a file into which trace has been
613  * written. */
614     #define traceEND()
615 #endif
616 
617 #ifndef traceTASK_SWITCHED_IN
618 
619 /* Called after a task has been selected to run.  pxCurrentTCB holds a pointer
620  * to the task control block of the selected task. */
621     #define traceTASK_SWITCHED_IN()
622 #endif
623 
624 #ifndef traceINCREASE_TICK_COUNT
625 
626 /* Called before stepping the tick count after waking from tickless idle
627  * sleep. */
628     #define traceINCREASE_TICK_COUNT( x )
629 #endif
630 
631 #ifndef traceLOW_POWER_IDLE_BEGIN
632     /* Called immediately before entering tickless idle. */
633     #define traceLOW_POWER_IDLE_BEGIN()
634 #endif
635 
636 #ifndef traceLOW_POWER_IDLE_END
637     /* Called when returning to the Idle task after a tickless idle. */
638     #define traceLOW_POWER_IDLE_END()
639 #endif
640 
641 #ifndef traceTASK_SWITCHED_OUT
642 
643 /* Called before a task has been selected to run.  pxCurrentTCB holds a pointer
644  * to the task control block of the task being switched out. */
645     #define traceTASK_SWITCHED_OUT()
646 #endif
647 
648 #ifndef traceTASK_PRIORITY_INHERIT
649 
650 /* Called when a task attempts to take a mutex that is already held by a
651  * lower priority task.  pxTCBOfMutexHolder is a pointer to the TCB of the task
652  * that holds the mutex.  uxInheritedPriority is the priority the mutex holder
653  * will inherit (the priority of the task that is attempting to obtain the
654  * muted. */
655     #define traceTASK_PRIORITY_INHERIT( pxTCBOfMutexHolder, uxInheritedPriority )
656 #endif
657 
658 #ifndef traceTASK_PRIORITY_DISINHERIT
659 
660 /* Called when a task releases a mutex, the holding of which had resulted in
661  * the task inheriting the priority of a higher priority task.
662  * pxTCBOfMutexHolder is a pointer to the TCB of the task that is releasing the
663  * mutex.  uxOriginalPriority is the task's configured (base) priority. */
664     #define traceTASK_PRIORITY_DISINHERIT( pxTCBOfMutexHolder, uxOriginalPriority )
665 #endif
666 
667 #ifndef traceBLOCKING_ON_QUEUE_RECEIVE
668 
669 /* Task is about to block because it cannot read from a
670  * queue/mutex/semaphore.  pxQueue is a pointer to the queue/mutex/semaphore
671  * upon which the read was attempted.  pxCurrentTCB points to the TCB of the
672  * task that attempted the read. */
673     #define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue )
674 #endif
675 
676 #ifndef traceBLOCKING_ON_QUEUE_PEEK
677 
678 /* Task is about to block because it cannot read from a
679  * queue/mutex/semaphore.  pxQueue is a pointer to the queue/mutex/semaphore
680  * upon which the read was attempted.  pxCurrentTCB points to the TCB of the
681  * task that attempted the read. */
682     #define traceBLOCKING_ON_QUEUE_PEEK( pxQueue )
683 #endif
684 
685 #ifndef traceBLOCKING_ON_QUEUE_SEND
686 
687 /* Task is about to block because it cannot write to a
688  * queue/mutex/semaphore.  pxQueue is a pointer to the queue/mutex/semaphore
689  * upon which the write was attempted.  pxCurrentTCB points to the TCB of the
690  * task that attempted the write. */
691     #define traceBLOCKING_ON_QUEUE_SEND( pxQueue )
692 #endif
693 
694 #ifndef configCHECK_FOR_STACK_OVERFLOW
695     #define configCHECK_FOR_STACK_OVERFLOW    0
696 #endif
697 
698 #ifndef configRECORD_STACK_HIGH_ADDRESS
699     #define configRECORD_STACK_HIGH_ADDRESS    0
700 #endif
701 
702 #ifndef configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H
703     #define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H    0
704 #endif
705 
706 /* The following event macros are embedded in the kernel API calls. */
707 
708 #ifndef traceMOVED_TASK_TO_READY_STATE
709     #define traceMOVED_TASK_TO_READY_STATE( pxTCB )
710 #endif
711 
712 #ifndef tracePOST_MOVED_TASK_TO_READY_STATE
713     #define tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB )
714 #endif
715 
716 #ifndef traceMOVED_TASK_TO_DELAYED_LIST
717     #define traceMOVED_TASK_TO_DELAYED_LIST()
718 #endif
719 
720 #ifndef traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST
721     #define traceMOVED_TASK_TO_OVERFLOW_DELAYED_LIST()
722 #endif
723 
724 #ifndef traceQUEUE_CREATE
725     #define traceQUEUE_CREATE( pxNewQueue )
726 #endif
727 
728 #ifndef traceQUEUE_CREATE_FAILED
729     #define traceQUEUE_CREATE_FAILED( ucQueueType )
730 #endif
731 
732 #ifndef traceCREATE_MUTEX
733     #define traceCREATE_MUTEX( pxNewQueue )
734 #endif
735 
736 #ifndef traceCREATE_MUTEX_FAILED
737     #define traceCREATE_MUTEX_FAILED()
738 #endif
739 
740 #ifndef traceGIVE_MUTEX_RECURSIVE
741     #define traceGIVE_MUTEX_RECURSIVE( pxMutex )
742 #endif
743 
744 #ifndef traceGIVE_MUTEX_RECURSIVE_FAILED
745     #define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex )
746 #endif
747 
748 #ifndef traceTAKE_MUTEX_RECURSIVE
749     #define traceTAKE_MUTEX_RECURSIVE( pxMutex )
750 #endif
751 
752 #ifndef traceTAKE_MUTEX_RECURSIVE_FAILED
753     #define traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex )
754 #endif
755 
756 #ifndef traceCREATE_COUNTING_SEMAPHORE
757     #define traceCREATE_COUNTING_SEMAPHORE()
758 #endif
759 
760 #ifndef traceCREATE_COUNTING_SEMAPHORE_FAILED
761     #define traceCREATE_COUNTING_SEMAPHORE_FAILED()
762 #endif
763 
764 #ifndef traceQUEUE_SET_SEND
765     #define traceQUEUE_SET_SEND    traceQUEUE_SEND
766 #endif
767 
768 #ifndef traceQUEUE_SEND
769     #define traceQUEUE_SEND( pxQueue )
770 #endif
771 
772 #ifndef traceQUEUE_SEND_FAILED
773     #define traceQUEUE_SEND_FAILED( pxQueue )
774 #endif
775 
776 #ifndef traceQUEUE_RECEIVE
777     #define traceQUEUE_RECEIVE( pxQueue )
778 #endif
779 
780 #ifndef traceQUEUE_PEEK
781     #define traceQUEUE_PEEK( pxQueue )
782 #endif
783 
784 #ifndef traceQUEUE_PEEK_FAILED
785     #define traceQUEUE_PEEK_FAILED( pxQueue )
786 #endif
787 
788 #ifndef traceQUEUE_PEEK_FROM_ISR
789     #define traceQUEUE_PEEK_FROM_ISR( pxQueue )
790 #endif
791 
792 #ifndef traceQUEUE_RECEIVE_FAILED
793     #define traceQUEUE_RECEIVE_FAILED( pxQueue )
794 #endif
795 
796 #ifndef traceQUEUE_SEND_FROM_ISR
797     #define traceQUEUE_SEND_FROM_ISR( pxQueue )
798 #endif
799 
800 #ifndef traceQUEUE_SEND_FROM_ISR_FAILED
801     #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue )
802 #endif
803 
804 #ifndef traceQUEUE_RECEIVE_FROM_ISR
805     #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue )
806 #endif
807 
808 #ifndef traceQUEUE_RECEIVE_FROM_ISR_FAILED
809     #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue )
810 #endif
811 
812 #ifndef traceQUEUE_PEEK_FROM_ISR_FAILED
813     #define traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue )
814 #endif
815 
816 #ifndef traceQUEUE_DELETE
817     #define traceQUEUE_DELETE( pxQueue )
818 #endif
819 
820 #ifndef traceTASK_CREATE
821     #define traceTASK_CREATE( pxNewTCB )
822 #endif
823 
824 #ifndef traceTASK_CREATE_FAILED
825     #define traceTASK_CREATE_FAILED()
826 #endif
827 
828 #ifndef traceTASK_DELETE
829     #define traceTASK_DELETE( pxTaskToDelete )
830 #endif
831 
832 #ifndef traceTASK_DELAY_UNTIL
833     #define traceTASK_DELAY_UNTIL( x )
834 #endif
835 
836 #ifndef traceTASK_DELAY
837     #define traceTASK_DELAY()
838 #endif
839 
840 #ifndef traceTASK_PRIORITY_SET
841     #define traceTASK_PRIORITY_SET( pxTask, uxNewPriority )
842 #endif
843 
844 #ifndef traceTASK_SUSPEND
845     #define traceTASK_SUSPEND( pxTaskToSuspend )
846 #endif
847 
848 #ifndef traceTASK_RESUME
849     #define traceTASK_RESUME( pxTaskToResume )
850 #endif
851 
852 #ifndef traceTASK_RESUME_FROM_ISR
853     #define traceTASK_RESUME_FROM_ISR( pxTaskToResume )
854 #endif
855 
856 #ifndef traceTASK_INCREMENT_TICK
857     #define traceTASK_INCREMENT_TICK( xTickCount )
858 #endif
859 
860 #ifndef traceTIMER_CREATE
861     #define traceTIMER_CREATE( pxNewTimer )
862 #endif
863 
864 #ifndef traceTIMER_CREATE_FAILED
865     #define traceTIMER_CREATE_FAILED()
866 #endif
867 
868 #ifndef traceTIMER_COMMAND_SEND
869     #define traceTIMER_COMMAND_SEND( xTimer, xMessageID, xMessageValueValue, xReturn )
870 #endif
871 
872 #ifndef traceTIMER_EXPIRED
873     #define traceTIMER_EXPIRED( pxTimer )
874 #endif
875 
876 #ifndef traceTIMER_COMMAND_RECEIVED
877     #define traceTIMER_COMMAND_RECEIVED( pxTimer, xMessageID, xMessageValue )
878 #endif
879 
880 #ifndef traceMALLOC
881     #define traceMALLOC( pvAddress, uiSize )
882 #endif
883 
884 #ifndef traceFREE
885     #define traceFREE( pvAddress, uiSize )
886 #endif
887 
888 #ifndef traceEVENT_GROUP_CREATE
889     #define traceEVENT_GROUP_CREATE( xEventGroup )
890 #endif
891 
892 #ifndef traceEVENT_GROUP_CREATE_FAILED
893     #define traceEVENT_GROUP_CREATE_FAILED()
894 #endif
895 
896 #ifndef traceEVENT_GROUP_SYNC_BLOCK
897     #define traceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor )
898 #endif
899 
900 #ifndef traceEVENT_GROUP_SYNC_END
901     #define traceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred )    ( void ) ( xTimeoutOccurred )
902 #endif
903 
904 #ifndef traceEVENT_GROUP_WAIT_BITS_BLOCK
905     #define traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor )
906 #endif
907 
908 #ifndef traceEVENT_GROUP_WAIT_BITS_END
909     #define traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred )    ( void ) ( xTimeoutOccurred )
910 #endif
911 
912 #ifndef traceEVENT_GROUP_CLEAR_BITS
913     #define traceEVENT_GROUP_CLEAR_BITS( xEventGroup, uxBitsToClear )
914 #endif
915 
916 #ifndef traceEVENT_GROUP_CLEAR_BITS_FROM_ISR
917     #define traceEVENT_GROUP_CLEAR_BITS_FROM_ISR( xEventGroup, uxBitsToClear )
918 #endif
919 
920 #ifndef traceEVENT_GROUP_SET_BITS
921     #define traceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet )
922 #endif
923 
924 #ifndef traceEVENT_GROUP_SET_BITS_FROM_ISR
925     #define traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet )
926 #endif
927 
928 #ifndef traceEVENT_GROUP_DELETE
929     #define traceEVENT_GROUP_DELETE( xEventGroup )
930 #endif
931 
932 #ifndef tracePEND_FUNC_CALL
933     #define tracePEND_FUNC_CALL( xFunctionToPend, pvParameter1, ulParameter2, ret )
934 #endif
935 
936 #ifndef tracePEND_FUNC_CALL_FROM_ISR
937     #define tracePEND_FUNC_CALL_FROM_ISR( xFunctionToPend, pvParameter1, ulParameter2, ret )
938 #endif
939 
940 #ifndef traceQUEUE_REGISTRY_ADD
941     #define traceQUEUE_REGISTRY_ADD( xQueue, pcQueueName )
942 #endif
943 
944 #ifndef traceTASK_NOTIFY_TAKE_BLOCK
945     #define traceTASK_NOTIFY_TAKE_BLOCK( uxIndexToWait )
946 #endif
947 
948 #ifndef traceTASK_NOTIFY_TAKE
949     #define traceTASK_NOTIFY_TAKE( uxIndexToWait )
950 #endif
951 
952 #ifndef traceTASK_NOTIFY_WAIT_BLOCK
953     #define traceTASK_NOTIFY_WAIT_BLOCK( uxIndexToWait )
954 #endif
955 
956 #ifndef traceTASK_NOTIFY_WAIT
957     #define traceTASK_NOTIFY_WAIT( uxIndexToWait )
958 #endif
959 
960 #ifndef traceTASK_NOTIFY
961     #define traceTASK_NOTIFY( uxIndexToNotify )
962 #endif
963 
964 #ifndef traceTASK_NOTIFY_FROM_ISR
965     #define traceTASK_NOTIFY_FROM_ISR( uxIndexToNotify )
966 #endif
967 
968 #ifndef traceTASK_NOTIFY_GIVE_FROM_ISR
969     #define traceTASK_NOTIFY_GIVE_FROM_ISR( uxIndexToNotify )
970 #endif
971 
972 #ifndef traceISR_EXIT_TO_SCHEDULER
973     #define traceISR_EXIT_TO_SCHEDULER()
974 #endif
975 
976 #ifndef traceISR_EXIT
977     #define traceISR_EXIT()
978 #endif
979 
980 #ifndef traceISR_ENTER
981     #define traceISR_ENTER()
982 #endif
983 
984 #ifndef traceSTREAM_BUFFER_CREATE_FAILED
985     #define traceSTREAM_BUFFER_CREATE_FAILED( xStreamBufferType )
986 #endif
987 
988 #ifndef traceSTREAM_BUFFER_CREATE_STATIC_FAILED
989     #define traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xStreamBufferType )
990 #endif
991 
992 #ifndef traceSTREAM_BUFFER_CREATE
993     #define traceSTREAM_BUFFER_CREATE( pxStreamBuffer, xStreamBufferType )
994 #endif
995 
996 #ifndef traceSTREAM_BUFFER_DELETE
997     #define traceSTREAM_BUFFER_DELETE( xStreamBuffer )
998 #endif
999 
1000 #ifndef traceSTREAM_BUFFER_RESET
1001     #define traceSTREAM_BUFFER_RESET( xStreamBuffer )
1002 #endif
1003 
1004 #ifndef traceSTREAM_BUFFER_RESET_FROM_ISR
1005     #define traceSTREAM_BUFFER_RESET_FROM_ISR( xStreamBuffer )
1006 #endif
1007 
1008 #ifndef traceBLOCKING_ON_STREAM_BUFFER_SEND
1009     #define traceBLOCKING_ON_STREAM_BUFFER_SEND( xStreamBuffer )
1010 #endif
1011 
1012 #ifndef traceSTREAM_BUFFER_SEND
1013     #define traceSTREAM_BUFFER_SEND( xStreamBuffer, xBytesSent )
1014 #endif
1015 
1016 #ifndef traceSTREAM_BUFFER_SEND_FAILED
1017     #define traceSTREAM_BUFFER_SEND_FAILED( xStreamBuffer )
1018 #endif
1019 
1020 #ifndef traceSTREAM_BUFFER_SEND_FROM_ISR
1021     #define traceSTREAM_BUFFER_SEND_FROM_ISR( xStreamBuffer, xBytesSent )
1022 #endif
1023 
1024 #ifndef traceBLOCKING_ON_STREAM_BUFFER_RECEIVE
1025     #define traceBLOCKING_ON_STREAM_BUFFER_RECEIVE( xStreamBuffer )
1026 #endif
1027 
1028 #ifndef traceSTREAM_BUFFER_RECEIVE
1029     #define traceSTREAM_BUFFER_RECEIVE( xStreamBuffer, xReceivedLength )
1030 #endif
1031 
1032 #ifndef traceSTREAM_BUFFER_RECEIVE_FAILED
1033     #define traceSTREAM_BUFFER_RECEIVE_FAILED( xStreamBuffer )
1034 #endif
1035 
1036 #ifndef traceSTREAM_BUFFER_RECEIVE_FROM_ISR
1037     #define traceSTREAM_BUFFER_RECEIVE_FROM_ISR( xStreamBuffer, xReceivedLength )
1038 #endif
1039 
1040 #ifndef traceENTER_xEventGroupCreateStatic
1041     #define traceENTER_xEventGroupCreateStatic( pxEventGroupBuffer )
1042 #endif
1043 
1044 #ifndef traceRETURN_xEventGroupCreateStatic
1045     #define traceRETURN_xEventGroupCreateStatic( pxEventBits )
1046 #endif
1047 
1048 #ifndef traceENTER_xEventGroupCreate
1049     #define traceENTER_xEventGroupCreate()
1050 #endif
1051 
1052 #ifndef traceRETURN_xEventGroupCreate
1053     #define traceRETURN_xEventGroupCreate( pxEventBits )
1054 #endif
1055 
1056 #ifndef traceENTER_xEventGroupSync
1057     #define traceENTER_xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait )
1058 #endif
1059 
1060 #ifndef traceRETURN_xEventGroupSync
1061     #define traceRETURN_xEventGroupSync( uxReturn )
1062 #endif
1063 
1064 #ifndef traceENTER_xEventGroupWaitBits
1065     #define traceENTER_xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait )
1066 #endif
1067 
1068 #ifndef traceRETURN_xEventGroupWaitBits
1069     #define traceRETURN_xEventGroupWaitBits( uxReturn )
1070 #endif
1071 
1072 #ifndef traceENTER_xEventGroupClearBits
1073     #define traceENTER_xEventGroupClearBits( xEventGroup, uxBitsToClear )
1074 #endif
1075 
1076 #ifndef traceRETURN_xEventGroupClearBits
1077     #define traceRETURN_xEventGroupClearBits( uxReturn )
1078 #endif
1079 
1080 #ifndef traceENTER_xEventGroupClearBitsFromISR
1081     #define traceENTER_xEventGroupClearBitsFromISR( xEventGroup, uxBitsToClear )
1082 #endif
1083 
1084 #ifndef traceRETURN_xEventGroupClearBitsFromISR
1085     #define traceRETURN_xEventGroupClearBitsFromISR( xReturn )
1086 #endif
1087 
1088 #ifndef traceENTER_xEventGroupGetBitsFromISR
1089     #define traceENTER_xEventGroupGetBitsFromISR( xEventGroup )
1090 #endif
1091 
1092 #ifndef traceRETURN_xEventGroupGetBitsFromISR
1093     #define traceRETURN_xEventGroupGetBitsFromISR( uxReturn )
1094 #endif
1095 
1096 #ifndef traceENTER_xEventGroupSetBits
1097     #define traceENTER_xEventGroupSetBits( xEventGroup, uxBitsToSet )
1098 #endif
1099 
1100 #ifndef traceRETURN_xEventGroupSetBits
1101     #define traceRETURN_xEventGroupSetBits( uxEventBits )
1102 #endif
1103 
1104 #ifndef traceENTER_vEventGroupDelete
1105     #define traceENTER_vEventGroupDelete( xEventGroup )
1106 #endif
1107 
1108 #ifndef traceRETURN_vEventGroupDelete
1109     #define traceRETURN_vEventGroupDelete()
1110 #endif
1111 
1112 #ifndef traceENTER_xEventGroupGetStaticBuffer
1113     #define traceENTER_xEventGroupGetStaticBuffer( xEventGroup, ppxEventGroupBuffer )
1114 #endif
1115 
1116 #ifndef traceRETURN_xEventGroupGetStaticBuffer
1117     #define traceRETURN_xEventGroupGetStaticBuffer( xReturn )
1118 #endif
1119 
1120 #ifndef traceENTER_vEventGroupSetBitsCallback
1121     #define traceENTER_vEventGroupSetBitsCallback( pvEventGroup, ulBitsToSet )
1122 #endif
1123 
1124 #ifndef traceRETURN_vEventGroupSetBitsCallback
1125     #define traceRETURN_vEventGroupSetBitsCallback()
1126 #endif
1127 
1128 #ifndef traceENTER_vEventGroupClearBitsCallback
1129     #define traceENTER_vEventGroupClearBitsCallback( pvEventGroup, ulBitsToClear )
1130 #endif
1131 
1132 #ifndef traceRETURN_vEventGroupClearBitsCallback
1133     #define traceRETURN_vEventGroupClearBitsCallback()
1134 #endif
1135 
1136 #ifndef traceENTER_xEventGroupSetBitsFromISR
1137     #define traceENTER_xEventGroupSetBitsFromISR( xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken )
1138 #endif
1139 
1140 #ifndef traceRETURN_xEventGroupSetBitsFromISR
1141     #define traceRETURN_xEventGroupSetBitsFromISR( xReturn )
1142 #endif
1143 
1144 #ifndef traceENTER_uxEventGroupGetNumber
1145     #define traceENTER_uxEventGroupGetNumber( xEventGroup )
1146 #endif
1147 
1148 #ifndef traceRETURN_uxEventGroupGetNumber
1149     #define traceRETURN_uxEventGroupGetNumber( xReturn )
1150 #endif
1151 
1152 #ifndef traceENTER_vEventGroupSetNumber
1153     #define traceENTER_vEventGroupSetNumber( xEventGroup, uxEventGroupNumber )
1154 #endif
1155 
1156 #ifndef traceRETURN_vEventGroupSetNumber
1157     #define traceRETURN_vEventGroupSetNumber()
1158 #endif
1159 
1160 #ifndef traceENTER_xQueueGenericReset
1161     #define traceENTER_xQueueGenericReset( xQueue, xNewQueue )
1162 #endif
1163 
1164 #ifndef traceRETURN_xQueueGenericReset
1165     #define traceRETURN_xQueueGenericReset( xReturn )
1166 #endif
1167 
1168 #ifndef traceENTER_xQueueGenericCreateStatic
1169     #define traceENTER_xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType )
1170 #endif
1171 
1172 #ifndef traceRETURN_xQueueGenericCreateStatic
1173     #define traceRETURN_xQueueGenericCreateStatic( pxNewQueue )
1174 #endif
1175 
1176 #ifndef traceENTER_xQueueGenericGetStaticBuffers
1177     #define traceENTER_xQueueGenericGetStaticBuffers( xQueue, ppucQueueStorage, ppxStaticQueue )
1178 #endif
1179 
1180 #ifndef traceRETURN_xQueueGenericGetStaticBuffers
1181     #define traceRETURN_xQueueGenericGetStaticBuffers( xReturn )
1182 #endif
1183 
1184 #ifndef traceENTER_xQueueGenericCreate
1185     #define traceENTER_xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType )
1186 #endif
1187 
1188 #ifndef traceRETURN_xQueueGenericCreate
1189     #define traceRETURN_xQueueGenericCreate( pxNewQueue )
1190 #endif
1191 
1192 #ifndef traceENTER_xQueueCreateMutex
1193     #define traceENTER_xQueueCreateMutex( ucQueueType )
1194 #endif
1195 
1196 #ifndef traceRETURN_xQueueCreateMutex
1197     #define traceRETURN_xQueueCreateMutex( xNewQueue )
1198 #endif
1199 
1200 #ifndef traceENTER_xQueueCreateMutexStatic
1201     #define traceENTER_xQueueCreateMutexStatic( ucQueueType, pxStaticQueue )
1202 #endif
1203 
1204 #ifndef traceRETURN_xQueueCreateMutexStatic
1205     #define traceRETURN_xQueueCreateMutexStatic( xNewQueue )
1206 #endif
1207 
1208 #ifndef traceENTER_xQueueGetMutexHolder
1209     #define traceENTER_xQueueGetMutexHolder( xSemaphore )
1210 #endif
1211 
1212 #ifndef traceRETURN_xQueueGetMutexHolder
1213     #define traceRETURN_xQueueGetMutexHolder( pxReturn )
1214 #endif
1215 
1216 #ifndef traceENTER_xQueueGetMutexHolderFromISR
1217     #define traceENTER_xQueueGetMutexHolderFromISR( xSemaphore )
1218 #endif
1219 
1220 #ifndef traceRETURN_xQueueGetMutexHolderFromISR
1221     #define traceRETURN_xQueueGetMutexHolderFromISR( pxReturn )
1222 #endif
1223 
1224 #ifndef traceENTER_xQueueGiveMutexRecursive
1225     #define traceENTER_xQueueGiveMutexRecursive( xMutex )
1226 #endif
1227 
1228 #ifndef traceRETURN_xQueueGiveMutexRecursive
1229     #define traceRETURN_xQueueGiveMutexRecursive( xReturn )
1230 #endif
1231 
1232 #ifndef traceENTER_xQueueTakeMutexRecursive
1233     #define traceENTER_xQueueTakeMutexRecursive( xMutex, xTicksToWait )
1234 #endif
1235 
1236 #ifndef traceRETURN_xQueueTakeMutexRecursive
1237     #define traceRETURN_xQueueTakeMutexRecursive( xReturn )
1238 #endif
1239 
1240 #ifndef traceENTER_xQueueCreateCountingSemaphoreStatic
1241     #define traceENTER_xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue )
1242 #endif
1243 
1244 #ifndef traceRETURN_xQueueCreateCountingSemaphoreStatic
1245     #define traceRETURN_xQueueCreateCountingSemaphoreStatic( xHandle )
1246 #endif
1247 
1248 #ifndef traceENTER_xQueueCreateCountingSemaphore
1249     #define traceENTER_xQueueCreateCountingSemaphore( uxMaxCount, uxInitialCount )
1250 #endif
1251 
1252 #ifndef traceRETURN_xQueueCreateCountingSemaphore
1253     #define traceRETURN_xQueueCreateCountingSemaphore( xHandle )
1254 #endif
1255 
1256 #ifndef traceENTER_xQueueGenericSend
1257     #define traceENTER_xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition )
1258 #endif
1259 
1260 #ifndef traceRETURN_xQueueGenericSend
1261     #define traceRETURN_xQueueGenericSend( xReturn )
1262 #endif
1263 
1264 #ifndef traceENTER_xQueueGenericSendFromISR
1265     #define traceENTER_xQueueGenericSendFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken, xCopyPosition )
1266 #endif
1267 
1268 #ifndef traceRETURN_xQueueGenericSendFromISR
1269     #define traceRETURN_xQueueGenericSendFromISR( xReturn )
1270 #endif
1271 
1272 #ifndef traceENTER_xQueueGiveFromISR
1273     #define traceENTER_xQueueGiveFromISR( xQueue, pxHigherPriorityTaskWoken )
1274 #endif
1275 
1276 #ifndef traceRETURN_xQueueGiveFromISR
1277     #define traceRETURN_xQueueGiveFromISR( xReturn )
1278 #endif
1279 
1280 #ifndef traceENTER_xQueueReceive
1281     #define traceENTER_xQueueReceive( xQueue, pvBuffer, xTicksToWait )
1282 #endif
1283 
1284 #ifndef traceRETURN_xQueueReceive
1285     #define traceRETURN_xQueueReceive( xReturn )
1286 #endif
1287 
1288 #ifndef traceENTER_xQueueSemaphoreTake
1289     #define traceENTER_xQueueSemaphoreTake( xQueue, xTicksToWait )
1290 #endif
1291 
1292 #ifndef traceRETURN_xQueueSemaphoreTake
1293     #define traceRETURN_xQueueSemaphoreTake( xReturn )
1294 #endif
1295 
1296 #ifndef traceENTER_xQueuePeek
1297     #define traceENTER_xQueuePeek( xQueue, pvBuffer, xTicksToWait )
1298 #endif
1299 
1300 #ifndef traceRETURN_xQueuePeek
1301     #define traceRETURN_xQueuePeek( xReturn )
1302 #endif
1303 
1304 #ifndef traceENTER_xQueueReceiveFromISR
1305     #define traceENTER_xQueueReceiveFromISR( xQueue, pvBuffer, pxHigherPriorityTaskWoken )
1306 #endif
1307 
1308 #ifndef traceRETURN_xQueueReceiveFromISR
1309     #define traceRETURN_xQueueReceiveFromISR( xReturn )
1310 #endif
1311 
1312 #ifndef traceENTER_xQueuePeekFromISR
1313     #define traceENTER_xQueuePeekFromISR( xQueue, pvBuffer )
1314 #endif
1315 
1316 #ifndef traceRETURN_xQueuePeekFromISR
1317     #define traceRETURN_xQueuePeekFromISR( xReturn )
1318 #endif
1319 
1320 #ifndef traceENTER_uxQueueMessagesWaiting
1321     #define traceENTER_uxQueueMessagesWaiting( xQueue )
1322 #endif
1323 
1324 #ifndef traceRETURN_uxQueueMessagesWaiting
1325     #define traceRETURN_uxQueueMessagesWaiting( uxReturn )
1326 #endif
1327 
1328 #ifndef traceENTER_uxQueueSpacesAvailable
1329     #define traceENTER_uxQueueSpacesAvailable( xQueue )
1330 #endif
1331 
1332 #ifndef traceRETURN_uxQueueSpacesAvailable
1333     #define traceRETURN_uxQueueSpacesAvailable( uxReturn )
1334 #endif
1335 
1336 #ifndef traceENTER_uxQueueMessagesWaitingFromISR
1337     #define traceENTER_uxQueueMessagesWaitingFromISR( xQueue )
1338 #endif
1339 
1340 #ifndef traceRETURN_uxQueueMessagesWaitingFromISR
1341     #define traceRETURN_uxQueueMessagesWaitingFromISR( uxReturn )
1342 #endif
1343 
1344 #ifndef traceENTER_vQueueDelete
1345     #define traceENTER_vQueueDelete( xQueue )
1346 #endif
1347 
1348 #ifndef traceRETURN_vQueueDelete
1349     #define traceRETURN_vQueueDelete()
1350 #endif
1351 
1352 #ifndef traceENTER_uxQueueGetQueueNumber
1353     #define traceENTER_uxQueueGetQueueNumber( xQueue )
1354 #endif
1355 
1356 #ifndef traceRETURN_uxQueueGetQueueNumber
1357     #define traceRETURN_uxQueueGetQueueNumber( uxQueueNumber )
1358 #endif
1359 
1360 #ifndef traceENTER_vQueueSetQueueNumber
1361     #define traceENTER_vQueueSetQueueNumber( xQueue, uxQueueNumber )
1362 #endif
1363 
1364 #ifndef traceRETURN_vQueueSetQueueNumber
1365     #define traceRETURN_vQueueSetQueueNumber()
1366 #endif
1367 
1368 #ifndef traceENTER_ucQueueGetQueueType
1369     #define traceENTER_ucQueueGetQueueType( xQueue )
1370 #endif
1371 
1372 #ifndef traceRETURN_ucQueueGetQueueType
1373     #define traceRETURN_ucQueueGetQueueType( ucQueueType )
1374 #endif
1375 
1376 #ifndef traceENTER_uxQueueGetQueueItemSize
1377     #define traceENTER_uxQueueGetQueueItemSize( xQueue )
1378 #endif
1379 
1380 #ifndef traceRETURN_uxQueueGetQueueItemSize
1381     #define traceRETURN_uxQueueGetQueueItemSize( uxItemSize )
1382 #endif
1383 
1384 #ifndef traceENTER_uxQueueGetQueueLength
1385     #define traceENTER_uxQueueGetQueueLength( xQueue )
1386 #endif
1387 
1388 #ifndef traceRETURN_uxQueueGetQueueLength
1389     #define traceRETURN_uxQueueGetQueueLength( uxLength )
1390 #endif
1391 
1392 #ifndef traceENTER_xQueueIsQueueEmptyFromISR
1393     #define traceENTER_xQueueIsQueueEmptyFromISR( xQueue )
1394 #endif
1395 
1396 #ifndef traceRETURN_xQueueIsQueueEmptyFromISR
1397     #define traceRETURN_xQueueIsQueueEmptyFromISR( xReturn )
1398 #endif
1399 
1400 #ifndef traceENTER_xQueueIsQueueFullFromISR
1401     #define traceENTER_xQueueIsQueueFullFromISR( xQueue )
1402 #endif
1403 
1404 #ifndef traceRETURN_xQueueIsQueueFullFromISR
1405     #define traceRETURN_xQueueIsQueueFullFromISR( xReturn )
1406 #endif
1407 
1408 #ifndef traceENTER_xQueueCRSend
1409     #define traceENTER_xQueueCRSend( xQueue, pvItemToQueue, xTicksToWait )
1410 #endif
1411 
1412 #ifndef traceRETURN_xQueueCRSend
1413     #define traceRETURN_xQueueCRSend( xReturn )
1414 #endif
1415 
1416 #ifndef traceENTER_xQueueCRReceive
1417     #define traceENTER_xQueueCRReceive( xQueue, pvBuffer, xTicksToWait )
1418 #endif
1419 
1420 #ifndef traceRETURN_xQueueCRReceive
1421     #define traceRETURN_xQueueCRReceive( xReturn )
1422 #endif
1423 
1424 #ifndef traceENTER_xQueueCRSendFromISR
1425     #define traceENTER_xQueueCRSendFromISR( xQueue, pvItemToQueue, xCoRoutinePreviouslyWoken )
1426 #endif
1427 
1428 #ifndef traceRETURN_xQueueCRSendFromISR
1429     #define traceRETURN_xQueueCRSendFromISR( xCoRoutinePreviouslyWoken )
1430 #endif
1431 
1432 #ifndef traceENTER_xQueueCRReceiveFromISR
1433     #define traceENTER_xQueueCRReceiveFromISR( xQueue, pvBuffer, pxCoRoutineWoken )
1434 #endif
1435 
1436 #ifndef traceRETURN_xQueueCRReceiveFromISR
1437     #define traceRETURN_xQueueCRReceiveFromISR( xReturn )
1438 #endif
1439 
1440 #ifndef traceENTER_vQueueAddToRegistry
1441     #define traceENTER_vQueueAddToRegistry( xQueue, pcQueueName )
1442 #endif
1443 
1444 #ifndef traceRETURN_vQueueAddToRegistry
1445     #define traceRETURN_vQueueAddToRegistry()
1446 #endif
1447 
1448 #ifndef traceENTER_pcQueueGetName
1449     #define traceENTER_pcQueueGetName( xQueue )
1450 #endif
1451 
1452 #ifndef traceRETURN_pcQueueGetName
1453     #define traceRETURN_pcQueueGetName( pcReturn )
1454 #endif
1455 
1456 #ifndef traceENTER_vQueueUnregisterQueue
1457     #define traceENTER_vQueueUnregisterQueue( xQueue )
1458 #endif
1459 
1460 #ifndef traceRETURN_vQueueUnregisterQueue
1461     #define traceRETURN_vQueueUnregisterQueue()
1462 #endif
1463 
1464 #ifndef traceENTER_vQueueWaitForMessageRestricted
1465     #define traceENTER_vQueueWaitForMessageRestricted( xQueue, xTicksToWait, xWaitIndefinitely )
1466 #endif
1467 
1468 #ifndef traceRETURN_vQueueWaitForMessageRestricted
1469     #define traceRETURN_vQueueWaitForMessageRestricted()
1470 #endif
1471 
1472 #ifndef traceENTER_xQueueCreateSet
1473     #define traceENTER_xQueueCreateSet( uxEventQueueLength )
1474 #endif
1475 
1476 #ifndef traceRETURN_xQueueCreateSet
1477     #define traceRETURN_xQueueCreateSet( pxQueue )
1478 #endif
1479 
1480 #ifndef traceENTER_xQueueAddToSet
1481     #define traceENTER_xQueueAddToSet( xQueueOrSemaphore, xQueueSet )
1482 #endif
1483 
1484 #ifndef traceRETURN_xQueueAddToSet
1485     #define traceRETURN_xQueueAddToSet( xReturn )
1486 #endif
1487 
1488 #ifndef traceENTER_xQueueRemoveFromSet
1489     #define traceENTER_xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet )
1490 #endif
1491 
1492 #ifndef traceRETURN_xQueueRemoveFromSet
1493     #define traceRETURN_xQueueRemoveFromSet( xReturn )
1494 #endif
1495 
1496 #ifndef traceENTER_xQueueSelectFromSet
1497     #define traceENTER_xQueueSelectFromSet( xQueueSet, xTicksToWait )
1498 #endif
1499 
1500 #ifndef traceRETURN_xQueueSelectFromSet
1501     #define traceRETURN_xQueueSelectFromSet( xReturn )
1502 #endif
1503 
1504 #ifndef traceENTER_xQueueSelectFromSetFromISR
1505     #define traceENTER_xQueueSelectFromSetFromISR( xQueueSet )
1506 #endif
1507 
1508 #ifndef traceRETURN_xQueueSelectFromSetFromISR
1509     #define traceRETURN_xQueueSelectFromSetFromISR( xReturn )
1510 #endif
1511 
1512 #ifndef traceENTER_xTimerCreateTimerTask
1513     #define traceENTER_xTimerCreateTimerTask()
1514 #endif
1515 
1516 #ifndef traceRETURN_xTimerCreateTimerTask
1517     #define traceRETURN_xTimerCreateTimerTask( xReturn )
1518 #endif
1519 
1520 #ifndef traceENTER_xTimerCreate
1521     #define traceENTER_xTimerCreate( pcTimerName, xTimerPeriodInTicks, xAutoReload, pvTimerID, pxCallbackFunction )
1522 #endif
1523 
1524 #ifndef traceRETURN_xTimerCreate
1525     #define traceRETURN_xTimerCreate( pxNewTimer )
1526 #endif
1527 
1528 #ifndef traceENTER_xTimerCreateStatic
1529     #define traceENTER_xTimerCreateStatic( pcTimerName, xTimerPeriodInTicks, xAutoReload, pvTimerID, pxCallbackFunction, pxTimerBuffer )
1530 #endif
1531 
1532 #ifndef traceRETURN_xTimerCreateStatic
1533     #define traceRETURN_xTimerCreateStatic( pxNewTimer )
1534 #endif
1535 
1536 #ifndef traceENTER_xTimerGenericCommandFromTask
1537     #define traceENTER_xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait )
1538 #endif
1539 
1540 #ifndef traceRETURN_xTimerGenericCommandFromTask
1541     #define traceRETURN_xTimerGenericCommandFromTask( xReturn )
1542 #endif
1543 
1544 #ifndef traceENTER_xTimerGenericCommandFromISR
1545     #define traceENTER_xTimerGenericCommandFromISR( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait )
1546 #endif
1547 
1548 #ifndef traceRETURN_xTimerGenericCommandFromISR
1549     #define traceRETURN_xTimerGenericCommandFromISR( xReturn )
1550 #endif
1551 
1552 #ifndef traceENTER_xTimerGetTimerDaemonTaskHandle
1553     #define traceENTER_xTimerGetTimerDaemonTaskHandle()
1554 #endif
1555 
1556 #ifndef traceRETURN_xTimerGetTimerDaemonTaskHandle
1557     #define traceRETURN_xTimerGetTimerDaemonTaskHandle( xTimerTaskHandle )
1558 #endif
1559 
1560 #ifndef traceENTER_xTimerGetPeriod
1561     #define traceENTER_xTimerGetPeriod( xTimer )
1562 #endif
1563 
1564 #ifndef traceRETURN_xTimerGetPeriod
1565     #define traceRETURN_xTimerGetPeriod( xTimerPeriodInTicks )
1566 #endif
1567 
1568 #ifndef traceENTER_vTimerSetReloadMode
1569     #define traceENTER_vTimerSetReloadMode( xTimer, xAutoReload )
1570 #endif
1571 
1572 #ifndef traceRETURN_vTimerSetReloadMode
1573     #define traceRETURN_vTimerSetReloadMode()
1574 #endif
1575 
1576 #ifndef traceENTER_xTimerGetReloadMode
1577     #define traceENTER_xTimerGetReloadMode( xTimer )
1578 #endif
1579 
1580 #ifndef traceRETURN_xTimerGetReloadMode
1581     #define traceRETURN_xTimerGetReloadMode( xReturn )
1582 #endif
1583 
1584 #ifndef traceENTER_uxTimerGetReloadMode
1585     #define traceENTER_uxTimerGetReloadMode( xTimer )
1586 #endif
1587 
1588 #ifndef traceRETURN_uxTimerGetReloadMode
1589     #define traceRETURN_uxTimerGetReloadMode( uxReturn )
1590 #endif
1591 
1592 #ifndef traceENTER_xTimerGetExpiryTime
1593     #define traceENTER_xTimerGetExpiryTime( xTimer )
1594 #endif
1595 
1596 #ifndef traceRETURN_xTimerGetExpiryTime
1597     #define traceRETURN_xTimerGetExpiryTime( xReturn )
1598 #endif
1599 
1600 #ifndef traceENTER_xTimerGetStaticBuffer
1601     #define traceENTER_xTimerGetStaticBuffer( xTimer, ppxTimerBuffer )
1602 #endif
1603 
1604 #ifndef traceRETURN_xTimerGetStaticBuffer
1605     #define traceRETURN_xTimerGetStaticBuffer( xReturn )
1606 #endif
1607 
1608 #ifndef traceENTER_pcTimerGetName
1609     #define traceENTER_pcTimerGetName( xTimer )
1610 #endif
1611 
1612 #ifndef traceRETURN_pcTimerGetName
1613     #define traceRETURN_pcTimerGetName( pcTimerName )
1614 #endif
1615 
1616 #ifndef traceENTER_xTimerIsTimerActive
1617     #define traceENTER_xTimerIsTimerActive( xTimer )
1618 #endif
1619 
1620 #ifndef traceRETURN_xTimerIsTimerActive
1621     #define traceRETURN_xTimerIsTimerActive( xReturn )
1622 #endif
1623 
1624 #ifndef traceENTER_pvTimerGetTimerID
1625     #define traceENTER_pvTimerGetTimerID( xTimer )
1626 #endif
1627 
1628 #ifndef traceRETURN_pvTimerGetTimerID
1629     #define traceRETURN_pvTimerGetTimerID( pvReturn )
1630 #endif
1631 
1632 #ifndef traceENTER_vTimerSetTimerID
1633     #define traceENTER_vTimerSetTimerID( xTimer, pvNewID )
1634 #endif
1635 
1636 #ifndef traceRETURN_vTimerSetTimerID
1637     #define traceRETURN_vTimerSetTimerID()
1638 #endif
1639 
1640 #ifndef traceENTER_xTimerPendFunctionCallFromISR
1641     #define traceENTER_xTimerPendFunctionCallFromISR( xFunctionToPend, pvParameter1, ulParameter2, pxHigherPriorityTaskWoken )
1642 #endif
1643 
1644 #ifndef traceRETURN_xTimerPendFunctionCallFromISR
1645     #define traceRETURN_xTimerPendFunctionCallFromISR( xReturn )
1646 #endif
1647 
1648 #ifndef traceENTER_xTimerPendFunctionCall
1649     #define traceENTER_xTimerPendFunctionCall( xFunctionToPend, pvParameter1, ulParameter2, xTicksToWait )
1650 #endif
1651 
1652 #ifndef traceRETURN_xTimerPendFunctionCall
1653     #define traceRETURN_xTimerPendFunctionCall( xReturn )
1654 #endif
1655 
1656 #ifndef traceENTER_uxTimerGetTimerNumber
1657     #define traceENTER_uxTimerGetTimerNumber( xTimer )
1658 #endif
1659 
1660 #ifndef traceRETURN_uxTimerGetTimerNumber
1661     #define traceRETURN_uxTimerGetTimerNumber( uxTimerNumber )
1662 #endif
1663 
1664 #ifndef traceENTER_vTimerSetTimerNumber
1665     #define traceENTER_vTimerSetTimerNumber( xTimer, uxTimerNumber )
1666 #endif
1667 
1668 #ifndef traceRETURN_vTimerSetTimerNumber
1669     #define traceRETURN_vTimerSetTimerNumber()
1670 #endif
1671 
1672 #ifndef traceENTER_xTaskCreateStatic
1673     #define traceENTER_xTaskCreateStatic( pxTaskCode, pcName, uxStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer )
1674 #endif
1675 
1676 #ifndef traceRETURN_xTaskCreateStatic
1677     #define traceRETURN_xTaskCreateStatic( xReturn )
1678 #endif
1679 
1680 #ifndef traceENTER_xTaskCreateStaticAffinitySet
1681     #define traceENTER_xTaskCreateStaticAffinitySet( pxTaskCode, pcName, uxStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer, uxCoreAffinityMask )
1682 #endif
1683 
1684 #ifndef traceRETURN_xTaskCreateStaticAffinitySet
1685     #define traceRETURN_xTaskCreateStaticAffinitySet( xReturn )
1686 #endif
1687 
1688 #ifndef traceENTER_xTaskCreateRestrictedStatic
1689     #define traceENTER_xTaskCreateRestrictedStatic( pxTaskDefinition, pxCreatedTask )
1690 #endif
1691 
1692 #ifndef traceRETURN_xTaskCreateRestrictedStatic
1693     #define traceRETURN_xTaskCreateRestrictedStatic( xReturn )
1694 #endif
1695 
1696 #ifndef traceENTER_xTaskCreateRestrictedStaticAffinitySet
1697     #define traceENTER_xTaskCreateRestrictedStaticAffinitySet( pxTaskDefinition, uxCoreAffinityMask, pxCreatedTask )
1698 #endif
1699 
1700 #ifndef traceRETURN_xTaskCreateRestrictedStaticAffinitySet
1701     #define traceRETURN_xTaskCreateRestrictedStaticAffinitySet( xReturn )
1702 #endif
1703 
1704 #ifndef traceENTER_xTaskCreateRestricted
1705     #define traceENTER_xTaskCreateRestricted( pxTaskDefinition, pxCreatedTask )
1706 #endif
1707 
1708 #ifndef traceRETURN_xTaskCreateRestricted
1709     #define traceRETURN_xTaskCreateRestricted( xReturn )
1710 #endif
1711 
1712 #ifndef traceENTER_xTaskCreateRestrictedAffinitySet
1713     #define traceENTER_xTaskCreateRestrictedAffinitySet( pxTaskDefinition, uxCoreAffinityMask, pxCreatedTask )
1714 #endif
1715 
1716 #ifndef traceRETURN_xTaskCreateRestrictedAffinitySet
1717     #define traceRETURN_xTaskCreateRestrictedAffinitySet( xReturn )
1718 #endif
1719 
1720 #ifndef traceENTER_xTaskCreate
1721     #define traceENTER_xTaskCreate( pxTaskCode, pcName, uxStackDepth, pvParameters, uxPriority, pxCreatedTask )
1722 #endif
1723 
1724 #ifndef traceRETURN_xTaskCreate
1725     #define traceRETURN_xTaskCreate( xReturn )
1726 #endif
1727 
1728 #ifndef traceENTER_xTaskCreateAffinitySet
1729     #define traceENTER_xTaskCreateAffinitySet( pxTaskCode, pcName, uxStackDepth, pvParameters, uxPriority, uxCoreAffinityMask, pxCreatedTask )
1730 #endif
1731 
1732 #ifndef traceRETURN_xTaskCreateAffinitySet
1733     #define traceRETURN_xTaskCreateAffinitySet( xReturn )
1734 #endif
1735 
1736 #ifndef traceENTER_vTaskDelete
1737     #define traceENTER_vTaskDelete( xTaskToDelete )
1738 #endif
1739 
1740 #ifndef traceRETURN_vTaskDelete
1741     #define traceRETURN_vTaskDelete()
1742 #endif
1743 
1744 #ifndef traceENTER_xTaskDelayUntil
1745     #define traceENTER_xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement )
1746 #endif
1747 
1748 #ifndef traceRETURN_xTaskDelayUntil
1749     #define traceRETURN_xTaskDelayUntil( xShouldDelay )
1750 #endif
1751 
1752 #ifndef traceENTER_vTaskDelay
1753     #define traceENTER_vTaskDelay( xTicksToDelay )
1754 #endif
1755 
1756 #ifndef traceRETURN_vTaskDelay
1757     #define traceRETURN_vTaskDelay()
1758 #endif
1759 
1760 #ifndef traceENTER_eTaskGetState
1761     #define traceENTER_eTaskGetState( xTask )
1762 #endif
1763 
1764 #ifndef traceRETURN_eTaskGetState
1765     #define traceRETURN_eTaskGetState( eReturn )
1766 #endif
1767 
1768 #ifndef traceENTER_uxTaskPriorityGet
1769     #define traceENTER_uxTaskPriorityGet( xTask )
1770 #endif
1771 
1772 #ifndef traceRETURN_uxTaskPriorityGet
1773     #define traceRETURN_uxTaskPriorityGet( uxReturn )
1774 #endif
1775 
1776 #ifndef traceENTER_uxTaskPriorityGetFromISR
1777     #define traceENTER_uxTaskPriorityGetFromISR( xTask )
1778 #endif
1779 
1780 #ifndef traceRETURN_uxTaskPriorityGetFromISR
1781     #define traceRETURN_uxTaskPriorityGetFromISR( uxReturn )
1782 #endif
1783 
1784 #ifndef traceENTER_uxTaskBasePriorityGet
1785     #define traceENTER_uxTaskBasePriorityGet( xTask )
1786 #endif
1787 
1788 #ifndef traceRETURN_uxTaskBasePriorityGet
1789     #define traceRETURN_uxTaskBasePriorityGet( uxReturn )
1790 #endif
1791 
1792 #ifndef traceENTER_uxTaskBasePriorityGetFromISR
1793     #define traceENTER_uxTaskBasePriorityGetFromISR( xTask )
1794 #endif
1795 
1796 #ifndef traceRETURN_uxTaskBasePriorityGetFromISR
1797     #define traceRETURN_uxTaskBasePriorityGetFromISR( uxReturn )
1798 #endif
1799 
1800 #ifndef traceENTER_vTaskPrioritySet
1801     #define traceENTER_vTaskPrioritySet( xTask, uxNewPriority )
1802 #endif
1803 
1804 #ifndef traceRETURN_vTaskPrioritySet
1805     #define traceRETURN_vTaskPrioritySet()
1806 #endif
1807 
1808 #ifndef traceENTER_vTaskCoreAffinitySet
1809     #define traceENTER_vTaskCoreAffinitySet( xTask, uxCoreAffinityMask )
1810 #endif
1811 
1812 #ifndef traceRETURN_vTaskCoreAffinitySet
1813     #define traceRETURN_vTaskCoreAffinitySet()
1814 #endif
1815 
1816 #ifndef traceENTER_vTaskCoreAffinityGet
1817     #define traceENTER_vTaskCoreAffinityGet( xTask )
1818 #endif
1819 
1820 #ifndef traceRETURN_vTaskCoreAffinityGet
1821     #define traceRETURN_vTaskCoreAffinityGet( uxCoreAffinityMask )
1822 #endif
1823 
1824 #ifndef traceENTER_vTaskPreemptionDisable
1825     #define traceENTER_vTaskPreemptionDisable( xTask )
1826 #endif
1827 
1828 #ifndef traceRETURN_vTaskPreemptionDisable
1829     #define traceRETURN_vTaskPreemptionDisable()
1830 #endif
1831 
1832 #ifndef traceENTER_vTaskPreemptionEnable
1833     #define traceENTER_vTaskPreemptionEnable( xTask )
1834 #endif
1835 
1836 #ifndef traceRETURN_vTaskPreemptionEnable
1837     #define traceRETURN_vTaskPreemptionEnable()
1838 #endif
1839 
1840 #ifndef traceENTER_vTaskSuspend
1841     #define traceENTER_vTaskSuspend( xTaskToSuspend )
1842 #endif
1843 
1844 #ifndef traceRETURN_vTaskSuspend
1845     #define traceRETURN_vTaskSuspend()
1846 #endif
1847 
1848 #ifndef traceENTER_vTaskResume
1849     #define traceENTER_vTaskResume( xTaskToResume )
1850 #endif
1851 
1852 #ifndef traceRETURN_vTaskResume
1853     #define traceRETURN_vTaskResume()
1854 #endif
1855 
1856 #ifndef traceENTER_xTaskResumeFromISR
1857     #define traceENTER_xTaskResumeFromISR( xTaskToResume )
1858 #endif
1859 
1860 #ifndef traceRETURN_xTaskResumeFromISR
1861     #define traceRETURN_xTaskResumeFromISR( xYieldRequired )
1862 #endif
1863 
1864 #ifndef traceENTER_vTaskStartScheduler
1865     #define traceENTER_vTaskStartScheduler()
1866 #endif
1867 
1868 #ifndef traceRETURN_vTaskStartScheduler
1869     #define traceRETURN_vTaskStartScheduler()
1870 #endif
1871 
1872 #ifndef traceENTER_vTaskEndScheduler
1873     #define traceENTER_vTaskEndScheduler()
1874 #endif
1875 
1876 #ifndef traceRETURN_vTaskEndScheduler
1877     #define traceRETURN_vTaskEndScheduler()
1878 #endif
1879 
1880 #ifndef traceENTER_vTaskSuspendAll
1881     #define traceENTER_vTaskSuspendAll()
1882 #endif
1883 
1884 #ifndef traceRETURN_vTaskSuspendAll
1885     #define traceRETURN_vTaskSuspendAll()
1886 #endif
1887 
1888 #ifndef traceENTER_xTaskResumeAll
1889     #define traceENTER_xTaskResumeAll()
1890 #endif
1891 
1892 #ifndef traceRETURN_xTaskResumeAll
1893     #define traceRETURN_xTaskResumeAll( xAlreadyYielded )
1894 #endif
1895 
1896 #ifndef traceENTER_xTaskGetTickCount
1897     #define traceENTER_xTaskGetTickCount()
1898 #endif
1899 
1900 #ifndef traceRETURN_xTaskGetTickCount
1901     #define traceRETURN_xTaskGetTickCount( xTicks )
1902 #endif
1903 
1904 #ifndef traceENTER_xTaskGetTickCountFromISR
1905     #define traceENTER_xTaskGetTickCountFromISR()
1906 #endif
1907 
1908 #ifndef traceRETURN_xTaskGetTickCountFromISR
1909     #define traceRETURN_xTaskGetTickCountFromISR( xReturn )
1910 #endif
1911 
1912 #ifndef traceENTER_uxTaskGetNumberOfTasks
1913     #define traceENTER_uxTaskGetNumberOfTasks()
1914 #endif
1915 
1916 #ifndef traceRETURN_uxTaskGetNumberOfTasks
1917     #define traceRETURN_uxTaskGetNumberOfTasks( uxCurrentNumberOfTasks )
1918 #endif
1919 
1920 #ifndef traceENTER_pcTaskGetName
1921     #define traceENTER_pcTaskGetName( xTaskToQuery )
1922 #endif
1923 
1924 #ifndef traceRETURN_pcTaskGetName
1925     #define traceRETURN_pcTaskGetName( pcTaskName )
1926 #endif
1927 
1928 #ifndef traceENTER_xTaskGetHandle
1929     #define traceENTER_xTaskGetHandle( pcNameToQuery )
1930 #endif
1931 
1932 #ifndef traceRETURN_xTaskGetHandle
1933     #define traceRETURN_xTaskGetHandle( pxTCB )
1934 #endif
1935 
1936 #ifndef traceENTER_xTaskGetStaticBuffers
1937     #define traceENTER_xTaskGetStaticBuffers( xTask, ppuxStackBuffer, ppxTaskBuffer )
1938 #endif
1939 
1940 #ifndef traceRETURN_xTaskGetStaticBuffers
1941     #define traceRETURN_xTaskGetStaticBuffers( xReturn )
1942 #endif
1943 
1944 #ifndef traceENTER_uxTaskGetSystemState
1945     #define traceENTER_uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime )
1946 #endif
1947 
1948 #ifndef traceRETURN_uxTaskGetSystemState
1949     #define traceRETURN_uxTaskGetSystemState( uxTask )
1950 #endif
1951 
1952 #if ( configNUMBER_OF_CORES == 1 )
1953     #ifndef traceENTER_xTaskGetIdleTaskHandle
1954         #define traceENTER_xTaskGetIdleTaskHandle()
1955     #endif
1956 #endif
1957 
1958 #if ( configNUMBER_OF_CORES == 1 )
1959     #ifndef traceRETURN_xTaskGetIdleTaskHandle
1960         #define traceRETURN_xTaskGetIdleTaskHandle( xIdleTaskHandle )
1961     #endif
1962 #endif
1963 
1964 #ifndef traceENTER_xTaskGetIdleTaskHandleForCore
1965     #define traceENTER_xTaskGetIdleTaskHandleForCore( xCoreID )
1966 #endif
1967 
1968 #ifndef traceRETURN_xTaskGetIdleTaskHandleForCore
1969     #define traceRETURN_xTaskGetIdleTaskHandleForCore( xIdleTaskHandle )
1970 #endif
1971 
1972 #ifndef traceENTER_vTaskStepTick
1973     #define traceENTER_vTaskStepTick( xTicksToJump )
1974 #endif
1975 
1976 #ifndef traceRETURN_vTaskStepTick
1977     #define traceRETURN_vTaskStepTick()
1978 #endif
1979 
1980 #ifndef traceENTER_xTaskCatchUpTicks
1981     #define traceENTER_xTaskCatchUpTicks( xTicksToCatchUp )
1982 #endif
1983 
1984 #ifndef traceRETURN_xTaskCatchUpTicks
1985     #define traceRETURN_xTaskCatchUpTicks( xYieldOccurred )
1986 #endif
1987 
1988 #ifndef traceENTER_xTaskAbortDelay
1989     #define traceENTER_xTaskAbortDelay( xTask )
1990 #endif
1991 
1992 #ifndef traceRETURN_xTaskAbortDelay
1993     #define traceRETURN_xTaskAbortDelay( xReturn )
1994 #endif
1995 
1996 #ifndef traceENTER_xTaskIncrementTick
1997     #define traceENTER_xTaskIncrementTick()
1998 #endif
1999 
2000 #ifndef traceRETURN_xTaskIncrementTick
2001     #define traceRETURN_xTaskIncrementTick( xSwitchRequired )
2002 #endif
2003 
2004 #ifndef traceENTER_vTaskSetApplicationTaskTag
2005     #define traceENTER_vTaskSetApplicationTaskTag( xTask, pxHookFunction )
2006 #endif
2007 
2008 #ifndef traceRETURN_vTaskSetApplicationTaskTag
2009     #define traceRETURN_vTaskSetApplicationTaskTag()
2010 #endif
2011 
2012 #ifndef traceENTER_xTaskGetApplicationTaskTag
2013     #define traceENTER_xTaskGetApplicationTaskTag( xTask )
2014 #endif
2015 
2016 #ifndef traceRETURN_xTaskGetApplicationTaskTag
2017     #define traceRETURN_xTaskGetApplicationTaskTag( xReturn )
2018 #endif
2019 
2020 #ifndef traceENTER_xTaskGetApplicationTaskTagFromISR
2021     #define traceENTER_xTaskGetApplicationTaskTagFromISR( xTask )
2022 #endif
2023 
2024 #ifndef traceRETURN_xTaskGetApplicationTaskTagFromISR
2025     #define traceRETURN_xTaskGetApplicationTaskTagFromISR( xReturn )
2026 #endif
2027 
2028 #ifndef traceENTER_xTaskCallApplicationTaskHook
2029     #define traceENTER_xTaskCallApplicationTaskHook( xTask, pvParameter )
2030 #endif
2031 
2032 #ifndef traceRETURN_xTaskCallApplicationTaskHook
2033     #define traceRETURN_xTaskCallApplicationTaskHook( xReturn )
2034 #endif
2035 
2036 #ifndef traceENTER_vTaskSwitchContext
2037     #define traceENTER_vTaskSwitchContext()
2038 #endif
2039 
2040 #ifndef traceRETURN_vTaskSwitchContext
2041     #define traceRETURN_vTaskSwitchContext()
2042 #endif
2043 
2044 #ifndef traceENTER_vTaskPlaceOnEventList
2045     #define traceENTER_vTaskPlaceOnEventList( pxEventList, xTicksToWait )
2046 #endif
2047 
2048 #ifndef traceRETURN_vTaskPlaceOnEventList
2049     #define traceRETURN_vTaskPlaceOnEventList()
2050 #endif
2051 
2052 #ifndef traceENTER_vTaskPlaceOnUnorderedEventList
2053     #define traceENTER_vTaskPlaceOnUnorderedEventList( pxEventList, xItemValue, xTicksToWait )
2054 #endif
2055 
2056 #ifndef traceRETURN_vTaskPlaceOnUnorderedEventList
2057     #define traceRETURN_vTaskPlaceOnUnorderedEventList()
2058 #endif
2059 
2060 #ifndef traceENTER_vTaskPlaceOnEventListRestricted
2061     #define traceENTER_vTaskPlaceOnEventListRestricted( pxEventList, xTicksToWait, xWaitIndefinitely )
2062 #endif
2063 
2064 #ifndef traceRETURN_vTaskPlaceOnEventListRestricted
2065     #define traceRETURN_vTaskPlaceOnEventListRestricted()
2066 #endif
2067 
2068 #ifndef traceENTER_xTaskRemoveFromEventList
2069     #define traceENTER_xTaskRemoveFromEventList( pxEventList )
2070 #endif
2071 
2072 #ifndef traceRETURN_xTaskRemoveFromEventList
2073     #define traceRETURN_xTaskRemoveFromEventList( xReturn )
2074 #endif
2075 
2076 #ifndef traceENTER_vTaskRemoveFromUnorderedEventList
2077     #define traceENTER_vTaskRemoveFromUnorderedEventList( pxEventListItem, xItemValue )
2078 #endif
2079 
2080 #ifndef traceRETURN_vTaskRemoveFromUnorderedEventList
2081     #define traceRETURN_vTaskRemoveFromUnorderedEventList()
2082 #endif
2083 
2084 #ifndef traceENTER_vTaskSetTimeOutState
2085     #define traceENTER_vTaskSetTimeOutState( pxTimeOut )
2086 #endif
2087 
2088 #ifndef traceRETURN_vTaskSetTimeOutState
2089     #define traceRETURN_vTaskSetTimeOutState()
2090 #endif
2091 
2092 #ifndef traceENTER_vTaskInternalSetTimeOutState
2093     #define traceENTER_vTaskInternalSetTimeOutState( pxTimeOut )
2094 #endif
2095 
2096 #ifndef traceRETURN_vTaskInternalSetTimeOutState
2097     #define traceRETURN_vTaskInternalSetTimeOutState()
2098 #endif
2099 
2100 #ifndef traceENTER_xTaskCheckForTimeOut
2101     #define traceENTER_xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait )
2102 #endif
2103 
2104 #ifndef traceRETURN_xTaskCheckForTimeOut
2105     #define traceRETURN_xTaskCheckForTimeOut( xReturn )
2106 #endif
2107 
2108 #ifndef traceENTER_vTaskMissedYield
2109     #define traceENTER_vTaskMissedYield()
2110 #endif
2111 
2112 #ifndef traceRETURN_vTaskMissedYield
2113     #define traceRETURN_vTaskMissedYield()
2114 #endif
2115 
2116 #ifndef traceENTER_uxTaskGetTaskNumber
2117     #define traceENTER_uxTaskGetTaskNumber( xTask )
2118 #endif
2119 
2120 #ifndef traceRETURN_uxTaskGetTaskNumber
2121     #define traceRETURN_uxTaskGetTaskNumber( uxReturn )
2122 #endif
2123 
2124 #ifndef traceENTER_vTaskSetTaskNumber
2125     #define traceENTER_vTaskSetTaskNumber( xTask, uxHandle )
2126 #endif
2127 
2128 #ifndef traceRETURN_vTaskSetTaskNumber
2129     #define traceRETURN_vTaskSetTaskNumber()
2130 #endif
2131 
2132 #ifndef traceENTER_eTaskConfirmSleepModeStatus
2133     #define traceENTER_eTaskConfirmSleepModeStatus()
2134 #endif
2135 
2136 #ifndef traceRETURN_eTaskConfirmSleepModeStatus
2137     #define traceRETURN_eTaskConfirmSleepModeStatus( eReturn )
2138 #endif
2139 
2140 #ifndef traceENTER_vTaskSetThreadLocalStoragePointer
2141     #define traceENTER_vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue )
2142 #endif
2143 
2144 #ifndef traceRETURN_vTaskSetThreadLocalStoragePointer
2145     #define traceRETURN_vTaskSetThreadLocalStoragePointer()
2146 #endif
2147 
2148 #ifndef traceENTER_pvTaskGetThreadLocalStoragePointer
2149     #define traceENTER_pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex )
2150 #endif
2151 
2152 #ifndef traceRETURN_pvTaskGetThreadLocalStoragePointer
2153     #define traceRETURN_pvTaskGetThreadLocalStoragePointer( pvReturn )
2154 #endif
2155 
2156 #ifndef traceENTER_vTaskAllocateMPURegions
2157     #define traceENTER_vTaskAllocateMPURegions( xTaskToModify, pxRegions )
2158 #endif
2159 
2160 #ifndef traceRETURN_vTaskAllocateMPURegions
2161     #define traceRETURN_vTaskAllocateMPURegions()
2162 #endif
2163 
2164 #ifndef traceENTER_vTaskGetInfo
2165     #define traceENTER_vTaskGetInfo( xTask, pxTaskStatus, xGetFreeStackSpace, eState )
2166 #endif
2167 
2168 #ifndef traceRETURN_vTaskGetInfo
2169     #define traceRETURN_vTaskGetInfo()
2170 #endif
2171 
2172 #ifndef traceENTER_uxTaskGetStackHighWaterMark2
2173     #define traceENTER_uxTaskGetStackHighWaterMark2( xTask )
2174 #endif
2175 
2176 #ifndef traceRETURN_uxTaskGetStackHighWaterMark2
2177     #define traceRETURN_uxTaskGetStackHighWaterMark2( uxReturn )
2178 #endif
2179 
2180 #ifndef traceENTER_uxTaskGetStackHighWaterMark
2181     #define traceENTER_uxTaskGetStackHighWaterMark( xTask )
2182 #endif
2183 
2184 #ifndef traceRETURN_uxTaskGetStackHighWaterMark
2185     #define traceRETURN_uxTaskGetStackHighWaterMark( uxReturn )
2186 #endif
2187 
2188 #ifndef traceENTER_xTaskGetCurrentTaskHandle
2189     #define traceENTER_xTaskGetCurrentTaskHandle()
2190 #endif
2191 
2192 #ifndef traceRETURN_xTaskGetCurrentTaskHandle
2193     #define traceRETURN_xTaskGetCurrentTaskHandle( xReturn )
2194 #endif
2195 
2196 #ifndef traceENTER_xTaskGetCurrentTaskHandleForCore
2197     #define traceENTER_xTaskGetCurrentTaskHandleForCore( xCoreID )
2198 #endif
2199 
2200 #ifndef traceRETURN_xTaskGetCurrentTaskHandleForCore
2201     #define traceRETURN_xTaskGetCurrentTaskHandleForCore( xReturn )
2202 #endif
2203 
2204 #ifndef traceENTER_xTaskGetSchedulerState
2205     #define traceENTER_xTaskGetSchedulerState()
2206 #endif
2207 
2208 #ifndef traceRETURN_xTaskGetSchedulerState
2209     #define traceRETURN_xTaskGetSchedulerState( xReturn )
2210 #endif
2211 
2212 #ifndef traceENTER_xTaskPriorityInherit
2213     #define traceENTER_xTaskPriorityInherit( pxMutexHolder )
2214 #endif
2215 
2216 #ifndef traceRETURN_xTaskPriorityInherit
2217     #define traceRETURN_xTaskPriorityInherit( xReturn )
2218 #endif
2219 
2220 #ifndef traceENTER_xTaskPriorityDisinherit
2221     #define traceENTER_xTaskPriorityDisinherit( pxMutexHolder )
2222 #endif
2223 
2224 #ifndef traceRETURN_xTaskPriorityDisinherit
2225     #define traceRETURN_xTaskPriorityDisinherit( xReturn )
2226 #endif
2227 
2228 #ifndef traceENTER_vTaskPriorityDisinheritAfterTimeout
2229     #define traceENTER_vTaskPriorityDisinheritAfterTimeout( pxMutexHolder, uxHighestPriorityWaitingTask )
2230 #endif
2231 
2232 #ifndef traceRETURN_vTaskPriorityDisinheritAfterTimeout
2233     #define traceRETURN_vTaskPriorityDisinheritAfterTimeout()
2234 #endif
2235 
2236 #ifndef traceENTER_vTaskYieldWithinAPI
2237     #define traceENTER_vTaskYieldWithinAPI()
2238 #endif
2239 
2240 #ifndef traceRETURN_vTaskYieldWithinAPI
2241     #define traceRETURN_vTaskYieldWithinAPI()
2242 #endif
2243 
2244 #ifndef traceENTER_vTaskEnterCritical
2245     #define traceENTER_vTaskEnterCritical()
2246 #endif
2247 
2248 #ifndef traceRETURN_vTaskEnterCritical
2249     #define traceRETURN_vTaskEnterCritical()
2250 #endif
2251 
2252 #ifndef traceENTER_vTaskEnterCriticalFromISR
2253     #define traceENTER_vTaskEnterCriticalFromISR()
2254 #endif
2255 
2256 #ifndef traceRETURN_vTaskEnterCriticalFromISR
2257     #define traceRETURN_vTaskEnterCriticalFromISR( uxSavedInterruptStatus )
2258 #endif
2259 
2260 #ifndef traceENTER_vTaskExitCritical
2261     #define traceENTER_vTaskExitCritical()
2262 #endif
2263 
2264 #ifndef traceRETURN_vTaskExitCritical
2265     #define traceRETURN_vTaskExitCritical()
2266 #endif
2267 
2268 #ifndef traceENTER_vTaskExitCriticalFromISR
2269     #define traceENTER_vTaskExitCriticalFromISR( uxSavedInterruptStatus )
2270 #endif
2271 
2272 #ifndef traceRETURN_vTaskExitCriticalFromISR
2273     #define traceRETURN_vTaskExitCriticalFromISR()
2274 #endif
2275 
2276 #ifndef traceENTER_vTaskListTasks
2277     #define traceENTER_vTaskListTasks( pcWriteBuffer, uxBufferLength )
2278 #endif
2279 
2280 #ifndef traceRETURN_vTaskListTasks
2281     #define traceRETURN_vTaskListTasks()
2282 #endif
2283 
2284 #ifndef traceENTER_vTaskGetRunTimeStatistics
2285     #define traceENTER_vTaskGetRunTimeStatistics( pcWriteBuffer, uxBufferLength )
2286 #endif
2287 
2288 #ifndef traceRETURN_vTaskGetRunTimeStatistics
2289     #define traceRETURN_vTaskGetRunTimeStatistics()
2290 #endif
2291 
2292 #ifndef traceENTER_uxTaskResetEventItemValue
2293     #define traceENTER_uxTaskResetEventItemValue()
2294 #endif
2295 
2296 #ifndef traceRETURN_uxTaskResetEventItemValue
2297     #define traceRETURN_uxTaskResetEventItemValue( uxReturn )
2298 #endif
2299 
2300 #ifndef traceENTER_pvTaskIncrementMutexHeldCount
2301     #define traceENTER_pvTaskIncrementMutexHeldCount()
2302 #endif
2303 
2304 #ifndef traceRETURN_pvTaskIncrementMutexHeldCount
2305     #define traceRETURN_pvTaskIncrementMutexHeldCount( pxTCB )
2306 #endif
2307 
2308 #ifndef traceENTER_ulTaskGenericNotifyTake
2309     #define traceENTER_ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait )
2310 #endif
2311 
2312 #ifndef traceRETURN_ulTaskGenericNotifyTake
2313     #define traceRETURN_ulTaskGenericNotifyTake( ulReturn )
2314 #endif
2315 
2316 #ifndef traceENTER_xTaskGenericNotifyWait
2317     #define traceENTER_xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait )
2318 #endif
2319 
2320 #ifndef traceRETURN_xTaskGenericNotifyWait
2321     #define traceRETURN_xTaskGenericNotifyWait( xReturn )
2322 #endif
2323 
2324 #ifndef traceENTER_xTaskGenericNotify
2325     #define traceENTER_xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue )
2326 #endif
2327 
2328 #ifndef traceRETURN_xTaskGenericNotify
2329     #define traceRETURN_xTaskGenericNotify( xReturn )
2330 #endif
2331 
2332 #ifndef traceENTER_xTaskGenericNotifyFromISR
2333     #define traceENTER_xTaskGenericNotifyFromISR( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue, pxHigherPriorityTaskWoken )
2334 #endif
2335 
2336 #ifndef traceRETURN_xTaskGenericNotifyFromISR
2337     #define traceRETURN_xTaskGenericNotifyFromISR( xReturn )
2338 #endif
2339 
2340 #ifndef traceENTER_vTaskGenericNotifyGiveFromISR
2341     #define traceENTER_vTaskGenericNotifyGiveFromISR( xTaskToNotify, uxIndexToNotify, pxHigherPriorityTaskWoken )
2342 #endif
2343 
2344 #ifndef traceRETURN_vTaskGenericNotifyGiveFromISR
2345     #define traceRETURN_vTaskGenericNotifyGiveFromISR()
2346 #endif
2347 
2348 #ifndef traceENTER_xTaskGenericNotifyStateClear
2349     #define traceENTER_xTaskGenericNotifyStateClear( xTask, uxIndexToClear )
2350 #endif
2351 
2352 #ifndef traceRETURN_xTaskGenericNotifyStateClear
2353     #define traceRETURN_xTaskGenericNotifyStateClear( xReturn )
2354 #endif
2355 
2356 #ifndef traceENTER_ulTaskGenericNotifyValueClear
2357     #define traceENTER_ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear )
2358 #endif
2359 
2360 #ifndef traceRETURN_ulTaskGenericNotifyValueClear
2361     #define traceRETURN_ulTaskGenericNotifyValueClear( ulReturn )
2362 #endif
2363 
2364 #ifndef traceENTER_ulTaskGetRunTimeCounter
2365     #define traceENTER_ulTaskGetRunTimeCounter( xTask )
2366 #endif
2367 
2368 #ifndef traceRETURN_ulTaskGetRunTimeCounter
2369     #define traceRETURN_ulTaskGetRunTimeCounter( ulRunTimeCounter )
2370 #endif
2371 
2372 #ifndef traceENTER_ulTaskGetRunTimePercent
2373     #define traceENTER_ulTaskGetRunTimePercent( xTask )
2374 #endif
2375 
2376 #ifndef traceRETURN_ulTaskGetRunTimePercent
2377     #define traceRETURN_ulTaskGetRunTimePercent( ulReturn )
2378 #endif
2379 
2380 #ifndef traceENTER_ulTaskGetIdleRunTimeCounter
2381     #define traceENTER_ulTaskGetIdleRunTimeCounter()
2382 #endif
2383 
2384 #ifndef traceRETURN_ulTaskGetIdleRunTimeCounter
2385     #define traceRETURN_ulTaskGetIdleRunTimeCounter( ulReturn )
2386 #endif
2387 
2388 #ifndef traceENTER_ulTaskGetIdleRunTimePercent
2389     #define traceENTER_ulTaskGetIdleRunTimePercent()
2390 #endif
2391 
2392 #ifndef traceRETURN_ulTaskGetIdleRunTimePercent
2393     #define traceRETURN_ulTaskGetIdleRunTimePercent( ulReturn )
2394 #endif
2395 
2396 #ifndef traceENTER_xTaskGetMPUSettings
2397     #define traceENTER_xTaskGetMPUSettings( xTask )
2398 #endif
2399 
2400 #ifndef traceRETURN_xTaskGetMPUSettings
2401     #define traceRETURN_xTaskGetMPUSettings( xMPUSettings )
2402 #endif
2403 
2404 #ifndef traceENTER_xStreamBufferGenericCreate
2405     #define traceENTER_xStreamBufferGenericCreate( xBufferSizeBytes, xTriggerLevelBytes, xStreamBufferType, pxSendCompletedCallback, pxReceiveCompletedCallback )
2406 #endif
2407 
2408 #ifndef traceRETURN_xStreamBufferGenericCreate
2409     #define traceRETURN_xStreamBufferGenericCreate( pvAllocatedMemory )
2410 #endif
2411 
2412 #ifndef traceENTER_xStreamBufferGenericCreateStatic
2413     #define traceENTER_xStreamBufferGenericCreateStatic( xBufferSizeBytes, xTriggerLevelBytes, xStreamBufferType, pucStreamBufferStorageArea, pxStaticStreamBuffer, pxSendCompletedCallback, pxReceiveCompletedCallback )
2414 #endif
2415 
2416 #ifndef traceRETURN_xStreamBufferGenericCreateStatic
2417     #define traceRETURN_xStreamBufferGenericCreateStatic( xReturn )
2418 #endif
2419 
2420 #ifndef traceENTER_xStreamBufferGetStaticBuffers
2421     #define traceENTER_xStreamBufferGetStaticBuffers( xStreamBuffer, ppucStreamBufferStorageArea, ppxStaticStreamBuffer )
2422 #endif
2423 
2424 #ifndef traceRETURN_xStreamBufferGetStaticBuffers
2425     #define traceRETURN_xStreamBufferGetStaticBuffers( xReturn )
2426 #endif
2427 
2428 #ifndef traceENTER_vStreamBufferDelete
2429     #define traceENTER_vStreamBufferDelete( xStreamBuffer )
2430 #endif
2431 
2432 #ifndef traceRETURN_vStreamBufferDelete
2433     #define traceRETURN_vStreamBufferDelete()
2434 #endif
2435 
2436 #ifndef traceENTER_xStreamBufferReset
2437     #define traceENTER_xStreamBufferReset( xStreamBuffer )
2438 #endif
2439 
2440 #ifndef traceRETURN_xStreamBufferReset
2441     #define traceRETURN_xStreamBufferReset( xReturn )
2442 #endif
2443 
2444 #ifndef traceENTER_xStreamBufferResetFromISR
2445     #define traceENTER_xStreamBufferResetFromISR( xStreamBuffer )
2446 #endif
2447 
2448 #ifndef traceRETURN_xStreamBufferResetFromISR
2449     #define traceRETURN_xStreamBufferResetFromISR( xReturn )
2450 #endif
2451 
2452 #ifndef traceENTER_xStreamBufferSetTriggerLevel
2453     #define traceENTER_xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel )
2454 #endif
2455 
2456 #ifndef traceRETURN_xStreamBufferSetTriggerLevel
2457     #define traceRETURN_xStreamBufferSetTriggerLevel( xReturn )
2458 #endif
2459 
2460 #ifndef traceENTER_xStreamBufferSpacesAvailable
2461     #define traceENTER_xStreamBufferSpacesAvailable( xStreamBuffer )
2462 #endif
2463 
2464 #ifndef traceRETURN_xStreamBufferSpacesAvailable
2465     #define traceRETURN_xStreamBufferSpacesAvailable( xSpace )
2466 #endif
2467 
2468 #ifndef traceENTER_xStreamBufferBytesAvailable
2469     #define traceENTER_xStreamBufferBytesAvailable( xStreamBuffer )
2470 #endif
2471 
2472 #ifndef traceRETURN_xStreamBufferBytesAvailable
2473     #define traceRETURN_xStreamBufferBytesAvailable( xReturn )
2474 #endif
2475 
2476 #ifndef traceENTER_xStreamBufferSend
2477     #define traceENTER_xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait )
2478 #endif
2479 
2480 #ifndef traceRETURN_xStreamBufferSend
2481     #define traceRETURN_xStreamBufferSend( xReturn )
2482 #endif
2483 
2484 #ifndef traceENTER_xStreamBufferSendFromISR
2485     #define traceENTER_xStreamBufferSendFromISR( xStreamBuffer, pvTxData, xDataLengthBytes, pxHigherPriorityTaskWoken )
2486 #endif
2487 
2488 #ifndef traceRETURN_xStreamBufferSendFromISR
2489     #define traceRETURN_xStreamBufferSendFromISR( xReturn )
2490 #endif
2491 
2492 #ifndef traceENTER_xStreamBufferReceive
2493     #define traceENTER_xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait )
2494 #endif
2495 
2496 #ifndef traceRETURN_xStreamBufferReceive
2497     #define traceRETURN_xStreamBufferReceive( xReceivedLength )
2498 #endif
2499 
2500 #ifndef traceENTER_xStreamBufferNextMessageLengthBytes
2501     #define traceENTER_xStreamBufferNextMessageLengthBytes( xStreamBuffer )
2502 #endif
2503 
2504 #ifndef traceRETURN_xStreamBufferNextMessageLengthBytes
2505     #define traceRETURN_xStreamBufferNextMessageLengthBytes( xReturn )
2506 #endif
2507 
2508 #ifndef traceENTER_xStreamBufferReceiveFromISR
2509     #define traceENTER_xStreamBufferReceiveFromISR( xStreamBuffer, pvRxData, xBufferLengthBytes, pxHigherPriorityTaskWoken )
2510 #endif
2511 
2512 #ifndef traceRETURN_xStreamBufferReceiveFromISR
2513     #define traceRETURN_xStreamBufferReceiveFromISR( xReceivedLength )
2514 #endif
2515 
2516 #ifndef traceENTER_xStreamBufferIsEmpty
2517     #define traceENTER_xStreamBufferIsEmpty( xStreamBuffer )
2518 #endif
2519 
2520 #ifndef traceRETURN_xStreamBufferIsEmpty
2521     #define traceRETURN_xStreamBufferIsEmpty( xReturn )
2522 #endif
2523 
2524 #ifndef traceENTER_xStreamBufferIsFull
2525     #define traceENTER_xStreamBufferIsFull( xStreamBuffer )
2526 #endif
2527 
2528 #ifndef traceRETURN_xStreamBufferIsFull
2529     #define traceRETURN_xStreamBufferIsFull( xReturn )
2530 #endif
2531 
2532 #ifndef traceENTER_xStreamBufferSendCompletedFromISR
2533     #define traceENTER_xStreamBufferSendCompletedFromISR( xStreamBuffer, pxHigherPriorityTaskWoken )
2534 #endif
2535 
2536 #ifndef traceRETURN_xStreamBufferSendCompletedFromISR
2537     #define traceRETURN_xStreamBufferSendCompletedFromISR( xReturn )
2538 #endif
2539 
2540 #ifndef traceENTER_xStreamBufferReceiveCompletedFromISR
2541     #define traceENTER_xStreamBufferReceiveCompletedFromISR( xStreamBuffer, pxHigherPriorityTaskWoken )
2542 #endif
2543 
2544 #ifndef traceRETURN_xStreamBufferReceiveCompletedFromISR
2545     #define traceRETURN_xStreamBufferReceiveCompletedFromISR( xReturn )
2546 #endif
2547 
2548 #ifndef traceENTER_uxStreamBufferGetStreamBufferNotificationIndex
2549     #define traceENTER_uxStreamBufferGetStreamBufferNotificationIndex( xStreamBuffer )
2550 #endif
2551 
2552 #ifndef traceRETURN_uxStreamBufferGetStreamBufferNotificationIndex
2553     #define traceRETURN_uxStreamBufferGetStreamBufferNotificationIndex( uxNotificationIndex )
2554 #endif
2555 
2556 #ifndef traceENTER_vStreamBufferSetStreamBufferNotificationIndex
2557     #define traceENTER_vStreamBufferSetStreamBufferNotificationIndex( xStreamBuffer, uxNotificationIndex )
2558 #endif
2559 
2560 #ifndef traceRETURN_vStreamBufferSetStreamBufferNotificationIndex
2561     #define traceRETURN_vStreamBufferSetStreamBufferNotificationIndex()
2562 #endif
2563 
2564 #ifndef traceENTER_uxStreamBufferGetStreamBufferNumber
2565     #define traceENTER_uxStreamBufferGetStreamBufferNumber( xStreamBuffer )
2566 #endif
2567 
2568 #ifndef traceRETURN_uxStreamBufferGetStreamBufferNumber
2569     #define traceRETURN_uxStreamBufferGetStreamBufferNumber( uxStreamBufferNumber )
2570 #endif
2571 
2572 #ifndef traceENTER_vStreamBufferSetStreamBufferNumber
2573     #define traceENTER_vStreamBufferSetStreamBufferNumber( xStreamBuffer, uxStreamBufferNumber )
2574 #endif
2575 
2576 #ifndef traceRETURN_vStreamBufferSetStreamBufferNumber
2577     #define traceRETURN_vStreamBufferSetStreamBufferNumber()
2578 #endif
2579 
2580 #ifndef traceENTER_ucStreamBufferGetStreamBufferType
2581     #define traceENTER_ucStreamBufferGetStreamBufferType( xStreamBuffer )
2582 #endif
2583 
2584 #ifndef traceRETURN_ucStreamBufferGetStreamBufferType
2585     #define traceRETURN_ucStreamBufferGetStreamBufferType( ucStreamBufferType )
2586 #endif
2587 
2588 #ifndef traceENTER_vListInitialise
2589     #define traceENTER_vListInitialise( pxList )
2590 #endif
2591 
2592 #ifndef traceRETURN_vListInitialise
2593     #define traceRETURN_vListInitialise()
2594 #endif
2595 
2596 #ifndef traceENTER_vListInitialiseItem
2597     #define traceENTER_vListInitialiseItem( pxItem )
2598 #endif
2599 
2600 #ifndef traceRETURN_vListInitialiseItem
2601     #define traceRETURN_vListInitialiseItem()
2602 #endif
2603 
2604 #ifndef traceENTER_vListInsertEnd
2605     #define traceENTER_vListInsertEnd( pxList, pxNewListItem )
2606 #endif
2607 
2608 #ifndef traceRETURN_vListInsertEnd
2609     #define traceRETURN_vListInsertEnd()
2610 #endif
2611 
2612 #ifndef traceENTER_vListInsert
2613     #define traceENTER_vListInsert( pxList, pxNewListItem )
2614 #endif
2615 
2616 #ifndef traceRETURN_vListInsert
2617     #define traceRETURN_vListInsert()
2618 #endif
2619 
2620 #ifndef traceENTER_uxListRemove
2621     #define traceENTER_uxListRemove( pxItemToRemove )
2622 #endif
2623 
2624 #ifndef traceRETURN_uxListRemove
2625     #define traceRETURN_uxListRemove( uxNumberOfItems )
2626 #endif
2627 
2628 #ifndef traceENTER_xCoRoutineCreate
2629     #define traceENTER_xCoRoutineCreate( pxCoRoutineCode, uxPriority, uxIndex )
2630 #endif
2631 
2632 #ifndef traceRETURN_xCoRoutineCreate
2633     #define traceRETURN_xCoRoutineCreate( xReturn )
2634 #endif
2635 
2636 #ifndef traceENTER_vCoRoutineAddToDelayedList
2637     #define traceENTER_vCoRoutineAddToDelayedList( xTicksToDelay, pxEventList )
2638 #endif
2639 
2640 #ifndef traceRETURN_vCoRoutineAddToDelayedList
2641     #define traceRETURN_vCoRoutineAddToDelayedList()
2642 #endif
2643 
2644 #ifndef traceENTER_vCoRoutineSchedule
2645     #define traceENTER_vCoRoutineSchedule()
2646 #endif
2647 
2648 #ifndef traceRETURN_vCoRoutineSchedule
2649     #define traceRETURN_vCoRoutineSchedule()
2650 #endif
2651 
2652 #ifndef traceENTER_xCoRoutineRemoveFromEventList
2653     #define traceENTER_xCoRoutineRemoveFromEventList( pxEventList )
2654 #endif
2655 
2656 #ifndef traceRETURN_xCoRoutineRemoveFromEventList
2657     #define traceRETURN_xCoRoutineRemoveFromEventList( xReturn )
2658 #endif
2659 
2660 #ifndef configGENERATE_RUN_TIME_STATS
2661     #define configGENERATE_RUN_TIME_STATS    0
2662 #endif
2663 
2664 #if ( configGENERATE_RUN_TIME_STATS == 1 )
2665 
2666     #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS
2667         #error If configGENERATE_RUN_TIME_STATS is defined then portCONFIGURE_TIMER_FOR_RUN_TIME_STATS must also be defined.  portCONFIGURE_TIMER_FOR_RUN_TIME_STATS should call a port layer function to setup a peripheral timer/counter that can then be used as the run time counter time base.
2668     #endif /* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS */
2669 
2670     #ifndef portGET_RUN_TIME_COUNTER_VALUE
2671         #ifndef portALT_GET_RUN_TIME_COUNTER_VALUE
2672             #error If configGENERATE_RUN_TIME_STATS is defined then either portGET_RUN_TIME_COUNTER_VALUE or portALT_GET_RUN_TIME_COUNTER_VALUE must also be defined.  See the examples provided and the FreeRTOS web site for more information.
2673         #endif /* portALT_GET_RUN_TIME_COUNTER_VALUE */
2674     #endif /* portGET_RUN_TIME_COUNTER_VALUE */
2675 
2676 #endif /* configGENERATE_RUN_TIME_STATS */
2677 
2678 #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS
2679     #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
2680 #endif
2681 
2682 #ifndef portPRIVILEGE_BIT
2683     #define portPRIVILEGE_BIT    ( ( UBaseType_t ) 0x00 )
2684 #endif
2685 
2686 #ifndef portYIELD_WITHIN_API
2687     #define portYIELD_WITHIN_API    portYIELD
2688 #endif
2689 
2690 #ifndef portSUPPRESS_TICKS_AND_SLEEP
2691     #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime )
2692 #endif
2693 
2694 #ifndef configEXPECTED_IDLE_TIME_BEFORE_SLEEP
2695     #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP    2
2696 #endif
2697 
2698 #if configEXPECTED_IDLE_TIME_BEFORE_SLEEP < 2
2699     #error configEXPECTED_IDLE_TIME_BEFORE_SLEEP must not be less than 2
2700 #endif
2701 
2702 #ifndef configUSE_TICKLESS_IDLE
2703     #define configUSE_TICKLESS_IDLE    0
2704 #endif
2705 
2706 #ifndef configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING
2707     #define configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING( x )
2708 #endif
2709 
2710 #ifndef configPRE_SLEEP_PROCESSING
2711     #define configPRE_SLEEP_PROCESSING( x )
2712 #endif
2713 
2714 #ifndef configPOST_SLEEP_PROCESSING
2715     #define configPOST_SLEEP_PROCESSING( x )
2716 #endif
2717 
2718 #ifndef configUSE_QUEUE_SETS
2719     #define configUSE_QUEUE_SETS    0
2720 #endif
2721 
2722 #ifndef portTASK_USES_FLOATING_POINT
2723     #define portTASK_USES_FLOATING_POINT()
2724 #endif
2725 
2726 #ifndef portALLOCATE_SECURE_CONTEXT
2727     #define portALLOCATE_SECURE_CONTEXT( ulSecureStackSize )
2728 #endif
2729 
2730 #ifndef portDONT_DISCARD
2731     #define portDONT_DISCARD
2732 #endif
2733 
2734 #ifndef configUSE_TIME_SLICING
2735     #define configUSE_TIME_SLICING    1
2736 #endif
2737 
2738 #ifndef configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS
2739     #define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS    0
2740 #endif
2741 
2742 #ifndef configUSE_STATS_FORMATTING_FUNCTIONS
2743     #define configUSE_STATS_FORMATTING_FUNCTIONS    0
2744 #endif
2745 
2746 #ifndef portASSERT_IF_INTERRUPT_PRIORITY_INVALID
2747     #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID()
2748 #endif
2749 
2750 #ifndef configUSE_TRACE_FACILITY
2751     #define configUSE_TRACE_FACILITY    0
2752 #endif
2753 
2754 #ifndef mtCOVERAGE_TEST_MARKER
2755     #define mtCOVERAGE_TEST_MARKER()
2756 #endif
2757 
2758 #ifndef mtCOVERAGE_TEST_DELAY
2759     #define mtCOVERAGE_TEST_DELAY()
2760 #endif
2761 
2762 #ifndef portASSERT_IF_IN_ISR
2763     #define portASSERT_IF_IN_ISR()
2764 #endif
2765 
2766 #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
2767     #define configUSE_PORT_OPTIMISED_TASK_SELECTION    0
2768 #endif
2769 
2770 #ifndef configAPPLICATION_ALLOCATED_HEAP
2771     #define configAPPLICATION_ALLOCATED_HEAP    0
2772 #endif
2773 
2774 #ifndef configENABLE_HEAP_PROTECTOR
2775     #define configENABLE_HEAP_PROTECTOR    0
2776 #endif
2777 
2778 #ifndef configUSE_TASK_NOTIFICATIONS
2779     #define configUSE_TASK_NOTIFICATIONS    1
2780 #endif
2781 
2782 #ifndef configTASK_NOTIFICATION_ARRAY_ENTRIES
2783     #define configTASK_NOTIFICATION_ARRAY_ENTRIES    1
2784 #endif
2785 
2786 #if configTASK_NOTIFICATION_ARRAY_ENTRIES < 1
2787     #error configTASK_NOTIFICATION_ARRAY_ENTRIES must be at least 1
2788 #endif
2789 
2790 #ifndef configUSE_POSIX_ERRNO
2791     #define configUSE_POSIX_ERRNO    0
2792 #endif
2793 
2794 #ifndef configUSE_SB_COMPLETED_CALLBACK
2795 
2796 /* By default per-instance callbacks are not enabled for stream buffer or message buffer. */
2797     #define configUSE_SB_COMPLETED_CALLBACK    0
2798 #endif
2799 
2800 #ifndef portTICK_TYPE_IS_ATOMIC
2801     #define portTICK_TYPE_IS_ATOMIC    0
2802 #endif
2803 
2804 #ifndef configSUPPORT_STATIC_ALLOCATION
2805     /* Defaults to 0 for backward compatibility. */
2806     #define configSUPPORT_STATIC_ALLOCATION    0
2807 #endif
2808 
2809 #ifndef configKERNEL_PROVIDED_STATIC_MEMORY
2810     #define configKERNEL_PROVIDED_STATIC_MEMORY    0
2811 #endif
2812 
2813 #ifndef configSUPPORT_DYNAMIC_ALLOCATION
2814     /* Defaults to 1 for backward compatibility. */
2815     #define configSUPPORT_DYNAMIC_ALLOCATION    1
2816 #endif
2817 
2818 #if ( ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION != 1 ) )
2819     #error configUSE_STATS_FORMATTING_FUNCTIONS cannot be used without dynamic allocation, but configSUPPORT_DYNAMIC_ALLOCATION is not set to 1.
2820 #endif
2821 
2822 #if ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 )
2823     #if ( ( configUSE_TRACE_FACILITY != 1 ) && ( configGENERATE_RUN_TIME_STATS != 1 ) )
2824         #error configUSE_STATS_FORMATTING_FUNCTIONS is 1 but the functions it enables are not used because neither configUSE_TRACE_FACILITY or configGENERATE_RUN_TIME_STATS are 1.  Set configUSE_STATS_FORMATTING_FUNCTIONS to 0 in FreeRTOSConfig.h.
2825     #endif
2826 #endif
2827 
2828 #ifndef configSTATS_BUFFER_MAX_LENGTH
2829     #define configSTATS_BUFFER_MAX_LENGTH    0xFFFF
2830 #endif
2831 
2832 #ifndef configSTACK_DEPTH_TYPE
2833 
2834 /* Defaults to StackType_t for backward compatibility, but can be overridden
2835  * in FreeRTOSConfig.h if StackType_t is too restrictive. */
2836     #define configSTACK_DEPTH_TYPE    StackType_t
2837 #endif
2838 
2839 #ifndef configRUN_TIME_COUNTER_TYPE
2840 
2841 /* Defaults to uint32_t for backward compatibility, but can be overridden in
2842  * FreeRTOSConfig.h if uint32_t is too restrictive. */
2843 
2844     #define configRUN_TIME_COUNTER_TYPE    uint32_t
2845 #endif
2846 
2847 #ifndef configMESSAGE_BUFFER_LENGTH_TYPE
2848 
2849 /* Defaults to size_t for backward compatibility, but can be overridden
2850  * in FreeRTOSConfig.h if lengths will always be less than the number of bytes
2851  * in a size_t. */
2852     #define configMESSAGE_BUFFER_LENGTH_TYPE    size_t
2853 #endif
2854 
2855 /* Sanity check the configuration. */
2856 #if ( ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) )
2857     #error configSUPPORT_STATIC_ALLOCATION and configSUPPORT_DYNAMIC_ALLOCATION cannot both be 0, but can both be 1.
2858 #endif
2859 
2860 #if ( ( configUSE_RECURSIVE_MUTEXES == 1 ) && ( configUSE_MUTEXES != 1 ) )
2861     #error configUSE_MUTEXES must be set to 1 to use recursive mutexes
2862 #endif
2863 
2864 #if ( ( configRUN_MULTIPLE_PRIORITIES == 0 ) && ( configUSE_TASK_PREEMPTION_DISABLE != 0 ) )
2865     #error configRUN_MULTIPLE_PRIORITIES must be set to 1 to use task preemption disable
2866 #endif
2867 
2868 #if ( ( configUSE_PREEMPTION == 0 ) && ( configUSE_TASK_PREEMPTION_DISABLE != 0 ) )
2869     #error configUSE_PREEMPTION must be set to 1 to use task preemption disable
2870 #endif
2871 
2872 #if ( ( configNUMBER_OF_CORES == 1 ) && ( configUSE_TASK_PREEMPTION_DISABLE != 0 ) )
2873     #error configUSE_TASK_PREEMPTION_DISABLE is not supported in single core FreeRTOS
2874 #endif
2875 
2876 #if ( ( configNUMBER_OF_CORES == 1 ) && ( configUSE_CORE_AFFINITY != 0 ) )
2877     #error configUSE_CORE_AFFINITY is not supported in single core FreeRTOS
2878 #endif
2879 
2880 #if ( ( configNUMBER_OF_CORES > 1 ) && ( configUSE_PORT_OPTIMISED_TASK_SELECTION != 0 ) )
2881     #error configUSE_PORT_OPTIMISED_TASK_SELECTION is not supported in SMP FreeRTOS
2882 #endif
2883 
2884 #ifndef configINITIAL_TICK_COUNT
2885     #define configINITIAL_TICK_COUNT    0
2886 #endif
2887 
2888 #if ( portTICK_TYPE_IS_ATOMIC == 0 )
2889 
2890 /* Either variables of tick type cannot be read atomically, or
2891  * portTICK_TYPE_IS_ATOMIC was not set - map the critical sections used when
2892  * the tick count is returned to the standard critical section macros. */
2893     #define portTICK_TYPE_ENTER_CRITICAL()                      portENTER_CRITICAL()
2894     #define portTICK_TYPE_EXIT_CRITICAL()                       portEXIT_CRITICAL()
2895     #define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR()         portSET_INTERRUPT_MASK_FROM_ISR()
2896     #define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x )    portCLEAR_INTERRUPT_MASK_FROM_ISR( ( x ) )
2897 #else
2898 
2899 /* The tick type can be read atomically, so critical sections used when the
2900  * tick count is returned can be defined away. */
2901     #define portTICK_TYPE_ENTER_CRITICAL()
2902     #define portTICK_TYPE_EXIT_CRITICAL()
2903     #define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR()         0
2904     #define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x )    ( void ) ( x )
2905 #endif /* if ( portTICK_TYPE_IS_ATOMIC == 0 ) */
2906 
2907 /* Definitions to allow backward compatibility with FreeRTOS versions prior to
2908  * V8 if desired. */
2909 #ifndef configENABLE_BACKWARD_COMPATIBILITY
2910     #define configENABLE_BACKWARD_COMPATIBILITY    1
2911 #endif
2912 
2913 #ifndef configPRINTF
2914 
2915 /* configPRINTF() was not defined, so define it away to nothing.  To use
2916  * configPRINTF() then define it as follows (where MyPrintFunction() is
2917  * provided by the application writer):
2918  *
2919  * void MyPrintFunction(const char *pcFormat, ... );
2920  #define configPRINTF( X )   MyPrintFunction X
2921  *
2922  * Then call like a standard printf() function, but placing brackets around
2923  * all parameters so they are passed as a single parameter.  For example:
2924  * configPRINTF( ("Value = %d", MyVariable) ); */
2925     #define configPRINTF( X )
2926 #endif
2927 
2928 #ifndef configMAX
2929 
2930 /* The application writer has not provided their own MAX macro, so define
2931  * the following generic implementation. */
2932     #define configMAX( a, b )    ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )
2933 #endif
2934 
2935 #ifndef configMIN
2936 
2937 /* The application writer has not provided their own MIN macro, so define
2938  * the following generic implementation. */
2939     #define configMIN( a, b )    ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) )
2940 #endif
2941 
2942 #if configENABLE_BACKWARD_COMPATIBILITY == 1
2943     #define eTaskStateGet                 eTaskGetState
2944     #define portTickType                  TickType_t
2945     #define xTaskHandle                   TaskHandle_t
2946     #define xQueueHandle                  QueueHandle_t
2947     #define xSemaphoreHandle              SemaphoreHandle_t
2948     #define xQueueSetHandle               QueueSetHandle_t
2949     #define xQueueSetMemberHandle         QueueSetMemberHandle_t
2950     #define xTimeOutType                  TimeOut_t
2951     #define xMemoryRegion                 MemoryRegion_t
2952     #define xTaskParameters               TaskParameters_t
2953     #define xTaskStatusType               TaskStatus_t
2954     #define xTimerHandle                  TimerHandle_t
2955     #define xCoRoutineHandle              CoRoutineHandle_t
2956     #define pdTASK_HOOK_CODE              TaskHookFunction_t
2957     #define portTICK_RATE_MS              portTICK_PERIOD_MS
2958     #define pcTaskGetTaskName             pcTaskGetName
2959     #define pcTimerGetTimerName           pcTimerGetName
2960     #define pcQueueGetQueueName           pcQueueGetName
2961     #define vTaskGetTaskInfo              vTaskGetInfo
2962     #define xTaskGetIdleRunTimeCounter    ulTaskGetIdleRunTimeCounter
2963 
2964 /* Backward compatibility within the scheduler code only - these definitions
2965  * are not really required but are included for completeness. */
2966     #define tmrTIMER_CALLBACK             TimerCallbackFunction_t
2967     #define pdTASK_CODE                   TaskFunction_t
2968     #define xListItem                     ListItem_t
2969     #define xList                         List_t
2970 
2971 /* For libraries that break the list data hiding, and access list structure
2972  * members directly (which is not supposed to be done). */
2973     #define pxContainer                   pvContainer
2974 #endif /* configENABLE_BACKWARD_COMPATIBILITY */
2975 
2976 #if ( configUSE_ALTERNATIVE_API != 0 )
2977     #error The alternative API was deprecated some time ago, and was removed in FreeRTOS V9.0 0
2978 #endif
2979 
2980 /* Set configUSE_TASK_FPU_SUPPORT to 0 to omit floating point support even
2981  * if floating point hardware is otherwise supported by the FreeRTOS port in use.
2982  * This constant is not supported by all FreeRTOS ports that include floating
2983  * point support. */
2984 #ifndef configUSE_TASK_FPU_SUPPORT
2985     #define configUSE_TASK_FPU_SUPPORT    1
2986 #endif
2987 
2988 /* Set configENABLE_MPU to 1 to enable MPU support and 0 to disable it. This is
2989  * currently used in ARMv8M ports. */
2990 #ifndef configENABLE_MPU
2991     #define configENABLE_MPU    0
2992 #endif
2993 
2994 /* Set configENABLE_FPU to 1 to enable FPU support and 0 to disable it. This is
2995  * currently used in ARMv8M ports. */
2996 #ifndef configENABLE_FPU
2997     #define configENABLE_FPU    1
2998 #endif
2999 
3000 /* Set configENABLE_MVE to 1 to enable MVE support and 0 to disable it. This is
3001  * currently used in ARMv8M ports. */
3002 #ifndef configENABLE_MVE
3003     #define configENABLE_MVE    0
3004 #endif
3005 
3006 /* Set configENABLE_TRUSTZONE to 1 enable TrustZone support and 0 to disable it.
3007  * This is currently used in ARMv8M ports. */
3008 #ifndef configENABLE_TRUSTZONE
3009     #define configENABLE_TRUSTZONE    1
3010 #endif
3011 
3012 /* Set configRUN_FREERTOS_SECURE_ONLY to 1 to run the FreeRTOS ARMv8M port on
3013  * the Secure Side only. */
3014 #ifndef configRUN_FREERTOS_SECURE_ONLY
3015     #define configRUN_FREERTOS_SECURE_ONLY    0
3016 #endif
3017 
3018 #ifndef configRUN_ADDITIONAL_TESTS
3019     #define configRUN_ADDITIONAL_TESTS    0
3020 #endif
3021 
3022 /* The following config allows infinite loop control. For example, control the
3023  * infinite loop in idle task function when performing unit tests. */
3024 #ifndef configCONTROL_INFINITE_LOOP
3025     #define configCONTROL_INFINITE_LOOP()
3026 #endif
3027 
3028 /* Sometimes the FreeRTOSConfig.h settings only allow a task to be created using
3029  * dynamically allocated RAM, in which case when any task is deleted it is known
3030  * that both the task's stack and TCB need to be freed.  Sometimes the
3031  * FreeRTOSConfig.h settings only allow a task to be created using statically
3032  * allocated RAM, in which case when any task is deleted it is known that neither
3033  * the task's stack or TCB should be freed.  Sometimes the FreeRTOSConfig.h
3034  * settings allow a task to be created using either statically or dynamically
3035  * allocated RAM, in which case a member of the TCB is used to record whether the
3036  * stack and/or TCB were allocated statically or dynamically, so when a task is
3037  * deleted the RAM that was allocated dynamically is freed again and no attempt is
3038  * made to free the RAM that was allocated statically.
3039  * tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE is only true if it is possible for a
3040  * task to be created using either statically or dynamically allocated RAM.  Note
3041  * that if portUSING_MPU_WRAPPERS is 1 then a protected task can be created with
3042  * a statically allocated stack and a dynamically allocated TCB.
3043  *
3044  * The following table lists various combinations of portUSING_MPU_WRAPPERS,
3045  * configSUPPORT_DYNAMIC_ALLOCATION and configSUPPORT_STATIC_ALLOCATION and
3046  * when it is possible to have both static and dynamic allocation:
3047  *  +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+
3048  * | MPU | Dynamic | Static |     Available Functions     |       Possible Allocations        | Both Dynamic and | Need Free |
3049  * |     |         |        |                             |                                   | Static Possible  |           |
3050  * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+
3051  * | 0   | 0       | 1      | xTaskCreateStatic           | TCB - Static, Stack - Static      | No               | No        |
3052  * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|
3053  * | 0   | 1       | 0      | xTaskCreate                 | TCB - Dynamic, Stack - Dynamic    | No               | Yes       |
3054  * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|
3055  * | 0   | 1       | 1      | xTaskCreate,                | 1. TCB - Dynamic, Stack - Dynamic | Yes              | Yes       |
3056  * |     |         |        | xTaskCreateStatic           | 2. TCB - Static, Stack - Static   |                  |           |
3057  * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|
3058  * | 1   | 0       | 1      | xTaskCreateStatic,          | TCB - Static, Stack - Static      | No               | No        |
3059  * |     |         |        | xTaskCreateRestrictedStatic |                                   |                  |           |
3060  * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|
3061  * | 1   | 1       | 0      | xTaskCreate,                | 1. TCB - Dynamic, Stack - Dynamic | Yes              | Yes       |
3062  * |     |         |        | xTaskCreateRestricted       | 2. TCB - Dynamic, Stack - Static  |                  |           |
3063  * +-----|---------|--------|-----------------------------|-----------------------------------|------------------|-----------|
3064  * | 1   | 1       | 1      | xTaskCreate,                | 1. TCB - Dynamic, Stack - Dynamic | Yes              | Yes       |
3065  * |     |         |        | xTaskCreateStatic,          | 2. TCB - Dynamic, Stack - Static  |                  |           |
3066  * |     |         |        | xTaskCreateRestricted,      | 3. TCB - Static, Stack - Static   |                  |           |
3067  * |     |         |        | xTaskCreateRestrictedStatic |                                   |                  |           |
3068  * +-----+---------+--------+-----------------------------+-----------------------------------+------------------+-----------+
3069  */
3070 #define tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE                                                                                     \
3071     ( ( ( portUSING_MPU_WRAPPERS == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) || \
3072       ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) )
3073 
3074 /*
3075  * In line with software engineering best practice, FreeRTOS implements a strict
3076  * data hiding policy, so the real structures used by FreeRTOS to maintain the
3077  * state of tasks, queues, semaphores, etc. are not accessible to the application
3078  * code.  However, if the application writer wants to statically allocate such
3079  * an object then the size of the object needs to be known.  Dummy structures
3080  * that are guaranteed to have the same size and alignment requirements of the
3081  * real objects are used for this purpose.  The dummy list and list item
3082  * structures below are used for inclusion in such a dummy structure.
3083  */
3084 struct xSTATIC_LIST_ITEM
3085 {
3086     #if ( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
3087         TickType_t xDummy1;
3088     #endif
3089     TickType_t xDummy2;
3090     void * pvDummy3[ 4 ];
3091     #if ( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
3092         TickType_t xDummy4;
3093     #endif
3094 };
3095 typedef struct xSTATIC_LIST_ITEM StaticListItem_t;
3096 
3097 #if ( configUSE_MINI_LIST_ITEM == 1 )
3098     /* See the comments above the struct xSTATIC_LIST_ITEM definition. */
3099     struct xSTATIC_MINI_LIST_ITEM
3100     {
3101         #if ( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
3102             TickType_t xDummy1;
3103         #endif
3104         TickType_t xDummy2;
3105         void * pvDummy3[ 2 ];
3106     };
3107     typedef struct xSTATIC_MINI_LIST_ITEM StaticMiniListItem_t;
3108 #else /* if ( configUSE_MINI_LIST_ITEM == 1 ) */
3109     typedef struct xSTATIC_LIST_ITEM      StaticMiniListItem_t;
3110 #endif /* if ( configUSE_MINI_LIST_ITEM == 1 ) */
3111 
3112 /* See the comments above the struct xSTATIC_LIST_ITEM definition. */
3113 typedef struct xSTATIC_LIST
3114 {
3115     #if ( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
3116         TickType_t xDummy1;
3117     #endif
3118     UBaseType_t uxDummy2;
3119     void * pvDummy3;
3120     StaticMiniListItem_t xDummy4;
3121     #if ( configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES == 1 )
3122         TickType_t xDummy5;
3123     #endif
3124 } StaticList_t;
3125 
3126 /*
3127  * In line with software engineering best practice, especially when supplying a
3128  * library that is likely to change in future versions, FreeRTOS implements a
3129  * strict data hiding policy.  This means the Task structure used internally by
3130  * FreeRTOS is not accessible to application code.  However, if the application
3131  * writer wants to statically allocate the memory required to create a task then
3132  * the size of the task object needs to be known.  The StaticTask_t structure
3133  * below is provided for this purpose.  Its sizes and alignment requirements are
3134  * guaranteed to match those of the genuine structure, no matter which
3135  * architecture is being used, and no matter how the values in FreeRTOSConfig.h
3136  * are set.  Its contents are somewhat obfuscated in the hope users will
3137  * recognise that it would be unwise to make direct use of the structure members.
3138  */
3139 typedef struct xSTATIC_TCB
3140 {
3141     void * pxDummy1;
3142     #if ( portUSING_MPU_WRAPPERS == 1 )
3143         xMPU_SETTINGS xDummy2;
3144     #endif
3145     #if ( configUSE_CORE_AFFINITY == 1 ) && ( configNUMBER_OF_CORES > 1 )
3146         UBaseType_t uxDummy26;
3147     #endif
3148     StaticListItem_t xDummy3[ 2 ];
3149     UBaseType_t uxDummy5;
3150     void * pxDummy6;
3151     #if ( configNUMBER_OF_CORES > 1 )
3152         BaseType_t xDummy23;
3153         UBaseType_t uxDummy24;
3154     #endif
3155     uint8_t ucDummy7[ configMAX_TASK_NAME_LEN ];
3156     #if ( configUSE_TASK_PREEMPTION_DISABLE == 1 )
3157         BaseType_t xDummy25;
3158     #endif
3159     #if ( ( portSTACK_GROWTH > 0 ) || ( configRECORD_STACK_HIGH_ADDRESS == 1 ) )
3160         void * pxDummy8;
3161     #endif
3162     #if ( portCRITICAL_NESTING_IN_TCB == 1 )
3163         UBaseType_t uxDummy9;
3164     #endif
3165     #if ( configUSE_TRACE_FACILITY == 1 )
3166         UBaseType_t uxDummy10[ 2 ];
3167     #endif
3168     #if ( configUSE_MUTEXES == 1 )
3169         UBaseType_t uxDummy12[ 2 ];
3170     #endif
3171     #if ( configUSE_APPLICATION_TASK_TAG == 1 )
3172         void * pxDummy14;
3173     #endif
3174     #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 )
3175         void * pvDummy15[ configNUM_THREAD_LOCAL_STORAGE_POINTERS ];
3176     #endif
3177     #if ( configGENERATE_RUN_TIME_STATS == 1 )
3178         configRUN_TIME_COUNTER_TYPE ulDummy16;
3179     #endif
3180     #if ( configUSE_C_RUNTIME_TLS_SUPPORT == 1 )
3181         configTLS_BLOCK_TYPE xDummy17;
3182     #endif
3183     #if ( configUSE_TASK_NOTIFICATIONS == 1 )
3184         uint32_t ulDummy18[ configTASK_NOTIFICATION_ARRAY_ENTRIES ];
3185         uint8_t ucDummy19[ configTASK_NOTIFICATION_ARRAY_ENTRIES ];
3186     #endif
3187     #if ( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 )
3188         uint8_t uxDummy20;
3189     #endif
3190 
3191     #if ( INCLUDE_xTaskAbortDelay == 1 )
3192         uint8_t ucDummy21;
3193     #endif
3194     #if ( configUSE_POSIX_ERRNO == 1 )
3195         int iDummy22;
3196     #endif
3197 } StaticTask_t;
3198 
3199 /*
3200  * In line with software engineering best practice, especially when supplying a
3201  * library that is likely to change in future versions, FreeRTOS implements a
3202  * strict data hiding policy.  This means the Queue structure used internally by
3203  * FreeRTOS is not accessible to application code.  However, if the application
3204  * writer wants to statically allocate the memory required to create a queue
3205  * then the size of the queue object needs to be known.  The StaticQueue_t
3206  * structure below is provided for this purpose.  Its sizes and alignment
3207  * requirements are guaranteed to match those of the genuine structure, no
3208  * matter which architecture is being used, and no matter how the values in
3209  * FreeRTOSConfig.h are set.  Its contents are somewhat obfuscated in the hope
3210  * users will recognise that it would be unwise to make direct use of the
3211  * structure members.
3212  */
3213 typedef struct xSTATIC_QUEUE
3214 {
3215     void * pvDummy1[ 3 ];
3216 
3217     union
3218     {
3219         void * pvDummy2;
3220         UBaseType_t uxDummy2;
3221     } u;
3222 
3223     StaticList_t xDummy3[ 2 ];
3224     UBaseType_t uxDummy4[ 3 ];
3225     uint8_t ucDummy5[ 2 ];
3226 
3227     #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
3228         uint8_t ucDummy6;
3229     #endif
3230 
3231     #if ( configUSE_QUEUE_SETS == 1 )
3232         void * pvDummy7;
3233     #endif
3234 
3235     #if ( configUSE_TRACE_FACILITY == 1 )
3236         UBaseType_t uxDummy8;
3237         uint8_t ucDummy9;
3238     #endif
3239 } StaticQueue_t;
3240 typedef StaticQueue_t StaticSemaphore_t;
3241 
3242 /*
3243  * In line with software engineering best practice, especially when supplying a
3244  * library that is likely to change in future versions, FreeRTOS implements a
3245  * strict data hiding policy.  This means the event group structure used
3246  * internally by FreeRTOS is not accessible to application code.  However, if
3247  * the application writer wants to statically allocate the memory required to
3248  * create an event group then the size of the event group object needs to be
3249  * know.  The StaticEventGroup_t structure below is provided for this purpose.
3250  * Its sizes and alignment requirements are guaranteed to match those of the
3251  * genuine structure, no matter which architecture is being used, and no matter
3252  * how the values in FreeRTOSConfig.h are set.  Its contents are somewhat
3253  * obfuscated in the hope users will recognise that it would be unwise to make
3254  * direct use of the structure members.
3255  */
3256 typedef struct xSTATIC_EVENT_GROUP
3257 {
3258     TickType_t xDummy1;
3259     StaticList_t xDummy2;
3260 
3261     #if ( configUSE_TRACE_FACILITY == 1 )
3262         UBaseType_t uxDummy3;
3263     #endif
3264 
3265     #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
3266         uint8_t ucDummy4;
3267     #endif
3268 } StaticEventGroup_t;
3269 
3270 /*
3271  * In line with software engineering best practice, especially when supplying a
3272  * library that is likely to change in future versions, FreeRTOS implements a
3273  * strict data hiding policy.  This means the software timer structure used
3274  * internally by FreeRTOS is not accessible to application code.  However, if
3275  * the application writer wants to statically allocate the memory required to
3276  * create a software timer then the size of the queue object needs to be known.
3277  * The StaticTimer_t structure below is provided for this purpose.  Its sizes
3278  * and alignment requirements are guaranteed to match those of the genuine
3279  * structure, no matter which architecture is being used, and no matter how the
3280  * values in FreeRTOSConfig.h are set.  Its contents are somewhat obfuscated in
3281  * the hope users will recognise that it would be unwise to make direct use of
3282  * the structure members.
3283  */
3284 typedef struct xSTATIC_TIMER
3285 {
3286     void * pvDummy1;
3287     StaticListItem_t xDummy2;
3288     TickType_t xDummy3;
3289     void * pvDummy5;
3290     TaskFunction_t pvDummy6;
3291     #if ( configUSE_TRACE_FACILITY == 1 )
3292         UBaseType_t uxDummy7;
3293     #endif
3294     uint8_t ucDummy8;
3295 } StaticTimer_t;
3296 
3297 /*
3298  * In line with software engineering best practice, especially when supplying a
3299  * library that is likely to change in future versions, FreeRTOS implements a
3300  * strict data hiding policy.  This means the stream buffer structure used
3301  * internally by FreeRTOS is not accessible to application code.  However, if
3302  * the application writer wants to statically allocate the memory required to
3303  * create a stream buffer then the size of the stream buffer object needs to be
3304  * known.  The StaticStreamBuffer_t structure below is provided for this
3305  * purpose.  Its size and alignment requirements are guaranteed to match those
3306  * of the genuine structure, no matter which architecture is being used, and
3307  * no matter how the values in FreeRTOSConfig.h are set.  Its contents are
3308  * somewhat obfuscated in the hope users will recognise that it would be unwise
3309  * to make direct use of the structure members.
3310  */
3311 typedef struct xSTATIC_STREAM_BUFFER
3312 {
3313     size_t uxDummy1[ 4 ];
3314     void * pvDummy2[ 3 ];
3315     uint8_t ucDummy3;
3316     #if ( configUSE_TRACE_FACILITY == 1 )
3317         UBaseType_t uxDummy4;
3318     #endif
3319     #if ( configUSE_SB_COMPLETED_CALLBACK == 1 )
3320         void * pvDummy5[ 2 ];
3321     #endif
3322     UBaseType_t uxDummy6;
3323 } StaticStreamBuffer_t;
3324 
3325 /* Message buffers are built on stream buffers. */
3326 typedef StaticStreamBuffer_t StaticMessageBuffer_t;
3327 
3328 /* *INDENT-OFF* */
3329 #ifdef __cplusplus
3330     }
3331 #endif
3332 /* *INDENT-ON* */
3333 
3334 #endif /* INC_FREERTOS_H */
3335