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