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