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