Francisco Paez / freertos

Dependents:   frdm_k64f_freertos_lib

Committer:
fep
Date:
Wed May 31 02:27:10 2017 +0000
Revision:
0:62cd296ba2a7
FreeRTOS v9.0.0 for Cortex-M4F (FRDM-K64F and others...)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fep 0:62cd296ba2a7 1 /*
fep 0:62cd296ba2a7 2 FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
fep 0:62cd296ba2a7 3 All rights reserved
fep 0:62cd296ba2a7 4
fep 0:62cd296ba2a7 5 VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
fep 0:62cd296ba2a7 6
fep 0:62cd296ba2a7 7 This file is part of the FreeRTOS distribution.
fep 0:62cd296ba2a7 8
fep 0:62cd296ba2a7 9 FreeRTOS is free software; you can redistribute it and/or modify it under
fep 0:62cd296ba2a7 10 the terms of the GNU General Public License (version 2) as published by the
fep 0:62cd296ba2a7 11 Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.
fep 0:62cd296ba2a7 12
fep 0:62cd296ba2a7 13 ***************************************************************************
fep 0:62cd296ba2a7 14 >>! NOTE: The modification to the GPL is included to allow you to !<<
fep 0:62cd296ba2a7 15 >>! distribute a combined work that includes FreeRTOS without being !<<
fep 0:62cd296ba2a7 16 >>! obliged to provide the source code for proprietary components !<<
fep 0:62cd296ba2a7 17 >>! outside of the FreeRTOS kernel. !<<
fep 0:62cd296ba2a7 18 ***************************************************************************
fep 0:62cd296ba2a7 19
fep 0:62cd296ba2a7 20 FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
fep 0:62cd296ba2a7 21 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
fep 0:62cd296ba2a7 22 FOR A PARTICULAR PURPOSE. Full license text is available on the following
fep 0:62cd296ba2a7 23 link: http://www.freertos.org/a00114.html
fep 0:62cd296ba2a7 24
fep 0:62cd296ba2a7 25 ***************************************************************************
fep 0:62cd296ba2a7 26 * *
fep 0:62cd296ba2a7 27 * FreeRTOS provides completely free yet professionally developed, *
fep 0:62cd296ba2a7 28 * robust, strictly quality controlled, supported, and cross *
fep 0:62cd296ba2a7 29 * platform software that is more than just the market leader, it *
fep 0:62cd296ba2a7 30 * is the industry's de facto standard. *
fep 0:62cd296ba2a7 31 * *
fep 0:62cd296ba2a7 32 * Help yourself get started quickly while simultaneously helping *
fep 0:62cd296ba2a7 33 * to support the FreeRTOS project by purchasing a FreeRTOS *
fep 0:62cd296ba2a7 34 * tutorial book, reference manual, or both: *
fep 0:62cd296ba2a7 35 * http://www.FreeRTOS.org/Documentation *
fep 0:62cd296ba2a7 36 * *
fep 0:62cd296ba2a7 37 ***************************************************************************
fep 0:62cd296ba2a7 38
fep 0:62cd296ba2a7 39 http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading
fep 0:62cd296ba2a7 40 the FAQ page "My application does not run, what could be wrong?". Have you
fep 0:62cd296ba2a7 41 defined configASSERT()?
fep 0:62cd296ba2a7 42
fep 0:62cd296ba2a7 43 http://www.FreeRTOS.org/support - In return for receiving this top quality
fep 0:62cd296ba2a7 44 embedded software for free we request you assist our global community by
fep 0:62cd296ba2a7 45 participating in the support forum.
fep 0:62cd296ba2a7 46
fep 0:62cd296ba2a7 47 http://www.FreeRTOS.org/training - Investing in training allows your team to
fep 0:62cd296ba2a7 48 be as productive as possible as early as possible. Now you can receive
fep 0:62cd296ba2a7 49 FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
fep 0:62cd296ba2a7 50 Ltd, and the world's leading authority on the world's leading RTOS.
fep 0:62cd296ba2a7 51
fep 0:62cd296ba2a7 52 http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
fep 0:62cd296ba2a7 53 including FreeRTOS+Trace - an indispensable productivity tool, a DOS
fep 0:62cd296ba2a7 54 compatible FAT file system, and our tiny thread aware UDP/IP stack.
fep 0:62cd296ba2a7 55
fep 0:62cd296ba2a7 56 http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
fep 0:62cd296ba2a7 57 Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
fep 0:62cd296ba2a7 58
fep 0:62cd296ba2a7 59 http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
fep 0:62cd296ba2a7 60 Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS
fep 0:62cd296ba2a7 61 licenses offer ticketed support, indemnification and commercial middleware.
fep 0:62cd296ba2a7 62
fep 0:62cd296ba2a7 63 http://www.SafeRTOS.com - High Integrity Systems also provide a safety
fep 0:62cd296ba2a7 64 engineered and independently SIL3 certified version for use in safety and
fep 0:62cd296ba2a7 65 mission critical applications that require provable dependability.
fep 0:62cd296ba2a7 66
fep 0:62cd296ba2a7 67 1 tab == 4 spaces!
fep 0:62cd296ba2a7 68 */
fep 0:62cd296ba2a7 69
fep 0:62cd296ba2a7 70 #ifndef INC_FREERTOS_H
fep 0:62cd296ba2a7 71 #define INC_FREERTOS_H
fep 0:62cd296ba2a7 72
fep 0:62cd296ba2a7 73 /*
fep 0:62cd296ba2a7 74 * Include the generic headers required for the FreeRTOS port being used.
fep 0:62cd296ba2a7 75 */
fep 0:62cd296ba2a7 76 #include <stddef.h>
fep 0:62cd296ba2a7 77
fep 0:62cd296ba2a7 78 /*
fep 0:62cd296ba2a7 79 * If stdint.h cannot be located then:
fep 0:62cd296ba2a7 80 * + If using GCC ensure the -nostdint options is *not* being used.
fep 0:62cd296ba2a7 81 * + Ensure the project's include path includes the directory in which your
fep 0:62cd296ba2a7 82 * compiler stores stdint.h.
fep 0:62cd296ba2a7 83 * + Set any compiler options necessary for it to support C99, as technically
fep 0:62cd296ba2a7 84 * stdint.h is only mandatory with C99 (FreeRTOS does not require C99 in any
fep 0:62cd296ba2a7 85 * other way).
fep 0:62cd296ba2a7 86 * + The FreeRTOS download includes a simple stdint.h definition that can be
fep 0:62cd296ba2a7 87 * used in cases where none is provided by the compiler. The files only
fep 0:62cd296ba2a7 88 * contains the typedefs required to build FreeRTOS. Read the instructions
fep 0:62cd296ba2a7 89 * in FreeRTOS/source/stdint.readme for more information.
fep 0:62cd296ba2a7 90 */
fep 0:62cd296ba2a7 91 #include <stdint.h> /* READ COMMENT ABOVE. */
fep 0:62cd296ba2a7 92
fep 0:62cd296ba2a7 93 #ifdef __cplusplus
fep 0:62cd296ba2a7 94 extern "C" {
fep 0:62cd296ba2a7 95 #endif
fep 0:62cd296ba2a7 96
fep 0:62cd296ba2a7 97 /* Application specific configuration options. */
fep 0:62cd296ba2a7 98 #include "FreeRTOSConfig.h"
fep 0:62cd296ba2a7 99
fep 0:62cd296ba2a7 100 /* Basic FreeRTOS definitions. */
fep 0:62cd296ba2a7 101 #include "projdefs.h"
fep 0:62cd296ba2a7 102
fep 0:62cd296ba2a7 103 /* Definitions specific to the port being used. */
fep 0:62cd296ba2a7 104 #include "portable.h"
fep 0:62cd296ba2a7 105
fep 0:62cd296ba2a7 106 /* Must be defaulted before configUSE_NEWLIB_REENTRANT is used below. */
fep 0:62cd296ba2a7 107 #ifndef configUSE_NEWLIB_REENTRANT
fep 0:62cd296ba2a7 108 #define configUSE_NEWLIB_REENTRANT 0
fep 0:62cd296ba2a7 109 #endif
fep 0:62cd296ba2a7 110
fep 0:62cd296ba2a7 111 /* Required if struct _reent is used. */
fep 0:62cd296ba2a7 112 #if ( configUSE_NEWLIB_REENTRANT == 1 )
fep 0:62cd296ba2a7 113 #include <reent.h>
fep 0:62cd296ba2a7 114 #endif
fep 0:62cd296ba2a7 115 /*
fep 0:62cd296ba2a7 116 * Check all the required application specific macros have been defined.
fep 0:62cd296ba2a7 117 * These macros are application specific and (as downloaded) are defined
fep 0:62cd296ba2a7 118 * within FreeRTOSConfig.h.
fep 0:62cd296ba2a7 119 */
fep 0:62cd296ba2a7 120
fep 0:62cd296ba2a7 121 #ifndef configMINIMAL_STACK_SIZE
fep 0:62cd296ba2a7 122 #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.
fep 0:62cd296ba2a7 123 #endif
fep 0:62cd296ba2a7 124
fep 0:62cd296ba2a7 125 #ifndef configMAX_PRIORITIES
fep 0:62cd296ba2a7 126 #error Missing definition: configMAX_PRIORITIES must be defined in FreeRTOSConfig.h. See the Configuration section of the FreeRTOS API documentation for details.
fep 0:62cd296ba2a7 127 #endif
fep 0:62cd296ba2a7 128
fep 0:62cd296ba2a7 129 #ifndef configUSE_PREEMPTION
fep 0:62cd296ba2a7 130 #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.
fep 0:62cd296ba2a7 131 #endif
fep 0:62cd296ba2a7 132
fep 0:62cd296ba2a7 133 #ifndef configUSE_IDLE_HOOK
fep 0:62cd296ba2a7 134 #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.
fep 0:62cd296ba2a7 135 #endif
fep 0:62cd296ba2a7 136
fep 0:62cd296ba2a7 137 #ifndef configUSE_TICK_HOOK
fep 0:62cd296ba2a7 138 #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.
fep 0:62cd296ba2a7 139 #endif
fep 0:62cd296ba2a7 140
fep 0:62cd296ba2a7 141 #ifndef configUSE_16_BIT_TICKS
fep 0:62cd296ba2a7 142 #error Missing definition: configUSE_16_BIT_TICKS must be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
fep 0:62cd296ba2a7 143 #endif
fep 0:62cd296ba2a7 144
fep 0:62cd296ba2a7 145 #ifndef configMAX_PRIORITIES
fep 0:62cd296ba2a7 146 #error configMAX_PRIORITIES must be defined to be greater than or equal to 1.
fep 0:62cd296ba2a7 147 #endif
fep 0:62cd296ba2a7 148
fep 0:62cd296ba2a7 149 #ifndef configUSE_CO_ROUTINES
fep 0:62cd296ba2a7 150 #define configUSE_CO_ROUTINES 0
fep 0:62cd296ba2a7 151 #endif
fep 0:62cd296ba2a7 152
fep 0:62cd296ba2a7 153 #ifndef INCLUDE_vTaskPrioritySet
fep 0:62cd296ba2a7 154 #define INCLUDE_vTaskPrioritySet 0
fep 0:62cd296ba2a7 155 #endif
fep 0:62cd296ba2a7 156
fep 0:62cd296ba2a7 157 #ifndef INCLUDE_uxTaskPriorityGet
fep 0:62cd296ba2a7 158 #define INCLUDE_uxTaskPriorityGet 0
fep 0:62cd296ba2a7 159 #endif
fep 0:62cd296ba2a7 160
fep 0:62cd296ba2a7 161 #ifndef INCLUDE_vTaskDelete
fep 0:62cd296ba2a7 162 #define INCLUDE_vTaskDelete 0
fep 0:62cd296ba2a7 163 #endif
fep 0:62cd296ba2a7 164
fep 0:62cd296ba2a7 165 #ifndef INCLUDE_vTaskSuspend
fep 0:62cd296ba2a7 166 #define INCLUDE_vTaskSuspend 0
fep 0:62cd296ba2a7 167 #endif
fep 0:62cd296ba2a7 168
fep 0:62cd296ba2a7 169 #ifndef INCLUDE_vTaskDelayUntil
fep 0:62cd296ba2a7 170 #define INCLUDE_vTaskDelayUntil 0
fep 0:62cd296ba2a7 171 #endif
fep 0:62cd296ba2a7 172
fep 0:62cd296ba2a7 173 #ifndef INCLUDE_vTaskDelay
fep 0:62cd296ba2a7 174 #define INCLUDE_vTaskDelay 0
fep 0:62cd296ba2a7 175 #endif
fep 0:62cd296ba2a7 176
fep 0:62cd296ba2a7 177 #ifndef INCLUDE_xTaskGetIdleTaskHandle
fep 0:62cd296ba2a7 178 #define INCLUDE_xTaskGetIdleTaskHandle 0
fep 0:62cd296ba2a7 179 #endif
fep 0:62cd296ba2a7 180
fep 0:62cd296ba2a7 181 #ifndef INCLUDE_xTaskAbortDelay
fep 0:62cd296ba2a7 182 #define INCLUDE_xTaskAbortDelay 0
fep 0:62cd296ba2a7 183 #endif
fep 0:62cd296ba2a7 184
fep 0:62cd296ba2a7 185 #ifndef INCLUDE_xQueueGetMutexHolder
fep 0:62cd296ba2a7 186 #define INCLUDE_xQueueGetMutexHolder 0
fep 0:62cd296ba2a7 187 #endif
fep 0:62cd296ba2a7 188
fep 0:62cd296ba2a7 189 #ifndef INCLUDE_xSemaphoreGetMutexHolder
fep 0:62cd296ba2a7 190 #define INCLUDE_xSemaphoreGetMutexHolder INCLUDE_xQueueGetMutexHolder
fep 0:62cd296ba2a7 191 #endif
fep 0:62cd296ba2a7 192
fep 0:62cd296ba2a7 193 #ifndef INCLUDE_xTaskGetHandle
fep 0:62cd296ba2a7 194 #define INCLUDE_xTaskGetHandle 0
fep 0:62cd296ba2a7 195 #endif
fep 0:62cd296ba2a7 196
fep 0:62cd296ba2a7 197 #ifndef INCLUDE_uxTaskGetStackHighWaterMark
fep 0:62cd296ba2a7 198 #define INCLUDE_uxTaskGetStackHighWaterMark 0
fep 0:62cd296ba2a7 199 #endif
fep 0:62cd296ba2a7 200
fep 0:62cd296ba2a7 201 #ifndef INCLUDE_eTaskGetState
fep 0:62cd296ba2a7 202 #define INCLUDE_eTaskGetState 0
fep 0:62cd296ba2a7 203 #endif
fep 0:62cd296ba2a7 204
fep 0:62cd296ba2a7 205 #ifndef INCLUDE_xTaskResumeFromISR
fep 0:62cd296ba2a7 206 #define INCLUDE_xTaskResumeFromISR 1
fep 0:62cd296ba2a7 207 #endif
fep 0:62cd296ba2a7 208
fep 0:62cd296ba2a7 209 #ifndef INCLUDE_xTimerPendFunctionCall
fep 0:62cd296ba2a7 210 #define INCLUDE_xTimerPendFunctionCall 0
fep 0:62cd296ba2a7 211 #endif
fep 0:62cd296ba2a7 212
fep 0:62cd296ba2a7 213 #ifndef INCLUDE_xTaskGetSchedulerState
fep 0:62cd296ba2a7 214 #define INCLUDE_xTaskGetSchedulerState 0
fep 0:62cd296ba2a7 215 #endif
fep 0:62cd296ba2a7 216
fep 0:62cd296ba2a7 217 #ifndef INCLUDE_xTaskGetCurrentTaskHandle
fep 0:62cd296ba2a7 218 #define INCLUDE_xTaskGetCurrentTaskHandle 0
fep 0:62cd296ba2a7 219 #endif
fep 0:62cd296ba2a7 220
fep 0:62cd296ba2a7 221 #if configUSE_CO_ROUTINES != 0
fep 0:62cd296ba2a7 222 #ifndef configMAX_CO_ROUTINE_PRIORITIES
fep 0:62cd296ba2a7 223 #error configMAX_CO_ROUTINE_PRIORITIES must be greater than or equal to 1.
fep 0:62cd296ba2a7 224 #endif
fep 0:62cd296ba2a7 225 #endif
fep 0:62cd296ba2a7 226
fep 0:62cd296ba2a7 227 #ifndef configUSE_DAEMON_TASK_STARTUP_HOOK
fep 0:62cd296ba2a7 228 #define configUSE_DAEMON_TASK_STARTUP_HOOK 0
fep 0:62cd296ba2a7 229 #endif
fep 0:62cd296ba2a7 230
fep 0:62cd296ba2a7 231 #ifndef configUSE_APPLICATION_TASK_TAG
fep 0:62cd296ba2a7 232 #define configUSE_APPLICATION_TASK_TAG 0
fep 0:62cd296ba2a7 233 #endif
fep 0:62cd296ba2a7 234
fep 0:62cd296ba2a7 235 #ifndef configNUM_THREAD_LOCAL_STORAGE_POINTERS
fep 0:62cd296ba2a7 236 #define configNUM_THREAD_LOCAL_STORAGE_POINTERS 0
fep 0:62cd296ba2a7 237 #endif
fep 0:62cd296ba2a7 238
fep 0:62cd296ba2a7 239 #ifndef configUSE_RECURSIVE_MUTEXES
fep 0:62cd296ba2a7 240 #define configUSE_RECURSIVE_MUTEXES 0
fep 0:62cd296ba2a7 241 #endif
fep 0:62cd296ba2a7 242
fep 0:62cd296ba2a7 243 #ifndef configUSE_MUTEXES
fep 0:62cd296ba2a7 244 #define configUSE_MUTEXES 0
fep 0:62cd296ba2a7 245 #endif
fep 0:62cd296ba2a7 246
fep 0:62cd296ba2a7 247 #ifndef configUSE_TIMERS
fep 0:62cd296ba2a7 248 #define configUSE_TIMERS 0
fep 0:62cd296ba2a7 249 #endif
fep 0:62cd296ba2a7 250
fep 0:62cd296ba2a7 251 #ifndef configUSE_COUNTING_SEMAPHORES
fep 0:62cd296ba2a7 252 #define configUSE_COUNTING_SEMAPHORES 0
fep 0:62cd296ba2a7 253 #endif
fep 0:62cd296ba2a7 254
fep 0:62cd296ba2a7 255 #ifndef configUSE_ALTERNATIVE_API
fep 0:62cd296ba2a7 256 #define configUSE_ALTERNATIVE_API 0
fep 0:62cd296ba2a7 257 #endif
fep 0:62cd296ba2a7 258
fep 0:62cd296ba2a7 259 #ifndef portCRITICAL_NESTING_IN_TCB
fep 0:62cd296ba2a7 260 #define portCRITICAL_NESTING_IN_TCB 0
fep 0:62cd296ba2a7 261 #endif
fep 0:62cd296ba2a7 262
fep 0:62cd296ba2a7 263 #ifndef configMAX_TASK_NAME_LEN
fep 0:62cd296ba2a7 264 #define configMAX_TASK_NAME_LEN 16
fep 0:62cd296ba2a7 265 #endif
fep 0:62cd296ba2a7 266
fep 0:62cd296ba2a7 267 #ifndef configIDLE_SHOULD_YIELD
fep 0:62cd296ba2a7 268 #define configIDLE_SHOULD_YIELD 1
fep 0:62cd296ba2a7 269 #endif
fep 0:62cd296ba2a7 270
fep 0:62cd296ba2a7 271 #if configMAX_TASK_NAME_LEN < 1
fep 0:62cd296ba2a7 272 #error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h
fep 0:62cd296ba2a7 273 #endif
fep 0:62cd296ba2a7 274
fep 0:62cd296ba2a7 275 #ifndef configASSERT
fep 0:62cd296ba2a7 276 #define configASSERT( x )
fep 0:62cd296ba2a7 277 #define configASSERT_DEFINED 0
fep 0:62cd296ba2a7 278 #else
fep 0:62cd296ba2a7 279 #define configASSERT_DEFINED 1
fep 0:62cd296ba2a7 280 #endif
fep 0:62cd296ba2a7 281
fep 0:62cd296ba2a7 282 /* The timers module relies on xTaskGetSchedulerState(). */
fep 0:62cd296ba2a7 283 #if configUSE_TIMERS == 1
fep 0:62cd296ba2a7 284
fep 0:62cd296ba2a7 285 #ifndef configTIMER_TASK_PRIORITY
fep 0:62cd296ba2a7 286 #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_PRIORITY must also be defined.
fep 0:62cd296ba2a7 287 #endif /* configTIMER_TASK_PRIORITY */
fep 0:62cd296ba2a7 288
fep 0:62cd296ba2a7 289 #ifndef configTIMER_QUEUE_LENGTH
fep 0:62cd296ba2a7 290 #error If configUSE_TIMERS is set to 1 then configTIMER_QUEUE_LENGTH must also be defined.
fep 0:62cd296ba2a7 291 #endif /* configTIMER_QUEUE_LENGTH */
fep 0:62cd296ba2a7 292
fep 0:62cd296ba2a7 293 #ifndef configTIMER_TASK_STACK_DEPTH
fep 0:62cd296ba2a7 294 #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_STACK_DEPTH must also be defined.
fep 0:62cd296ba2a7 295 #endif /* configTIMER_TASK_STACK_DEPTH */
fep 0:62cd296ba2a7 296
fep 0:62cd296ba2a7 297 #endif /* configUSE_TIMERS */
fep 0:62cd296ba2a7 298
fep 0:62cd296ba2a7 299 #ifndef portSET_INTERRUPT_MASK_FROM_ISR
fep 0:62cd296ba2a7 300 #define portSET_INTERRUPT_MASK_FROM_ISR() 0
fep 0:62cd296ba2a7 301 #endif
fep 0:62cd296ba2a7 302
fep 0:62cd296ba2a7 303 #ifndef portCLEAR_INTERRUPT_MASK_FROM_ISR
fep 0:62cd296ba2a7 304 #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusValue ) ( void ) uxSavedStatusValue
fep 0:62cd296ba2a7 305 #endif
fep 0:62cd296ba2a7 306
fep 0:62cd296ba2a7 307 #ifndef portCLEAN_UP_TCB
fep 0:62cd296ba2a7 308 #define portCLEAN_UP_TCB( pxTCB ) ( void ) pxTCB
fep 0:62cd296ba2a7 309 #endif
fep 0:62cd296ba2a7 310
fep 0:62cd296ba2a7 311 #ifndef portPRE_TASK_DELETE_HOOK
fep 0:62cd296ba2a7 312 #define portPRE_TASK_DELETE_HOOK( pvTaskToDelete, pxYieldPending )
fep 0:62cd296ba2a7 313 #endif
fep 0:62cd296ba2a7 314
fep 0:62cd296ba2a7 315 #ifndef portSETUP_TCB
fep 0:62cd296ba2a7 316 #define portSETUP_TCB( pxTCB ) ( void ) pxTCB
fep 0:62cd296ba2a7 317 #endif
fep 0:62cd296ba2a7 318
fep 0:62cd296ba2a7 319 #ifndef configQUEUE_REGISTRY_SIZE
fep 0:62cd296ba2a7 320 #define configQUEUE_REGISTRY_SIZE 0U
fep 0:62cd296ba2a7 321 #endif
fep 0:62cd296ba2a7 322
fep 0:62cd296ba2a7 323 #if ( configQUEUE_REGISTRY_SIZE < 1 )
fep 0:62cd296ba2a7 324 #define vQueueAddToRegistry( xQueue, pcName )
fep 0:62cd296ba2a7 325 #define vQueueUnregisterQueue( xQueue )
fep 0:62cd296ba2a7 326 #define pcQueueGetName( xQueue )
fep 0:62cd296ba2a7 327 #endif
fep 0:62cd296ba2a7 328
fep 0:62cd296ba2a7 329 #ifndef portPOINTER_SIZE_TYPE
fep 0:62cd296ba2a7 330 #define portPOINTER_SIZE_TYPE uint32_t
fep 0:62cd296ba2a7 331 #endif
fep 0:62cd296ba2a7 332
fep 0:62cd296ba2a7 333 /* Remove any unused trace macros. */
fep 0:62cd296ba2a7 334 #ifndef traceSTART
fep 0:62cd296ba2a7 335 /* Used to perform any necessary initialisation - for example, open a file
fep 0:62cd296ba2a7 336 into which trace is to be written. */
fep 0:62cd296ba2a7 337 #define traceSTART()
fep 0:62cd296ba2a7 338 #endif
fep 0:62cd296ba2a7 339
fep 0:62cd296ba2a7 340 #ifndef traceEND
fep 0:62cd296ba2a7 341 /* Use to close a trace, for example close a file into which trace has been
fep 0:62cd296ba2a7 342 written. */
fep 0:62cd296ba2a7 343 #define traceEND()
fep 0:62cd296ba2a7 344 #endif
fep 0:62cd296ba2a7 345
fep 0:62cd296ba2a7 346 #ifndef traceTASK_SWITCHED_IN
fep 0:62cd296ba2a7 347 /* Called after a task has been selected to run. pxCurrentTCB holds a pointer
fep 0:62cd296ba2a7 348 to the task control block of the selected task. */
fep 0:62cd296ba2a7 349 #define traceTASK_SWITCHED_IN()
fep 0:62cd296ba2a7 350 #endif
fep 0:62cd296ba2a7 351
fep 0:62cd296ba2a7 352 #ifndef traceINCREASE_TICK_COUNT
fep 0:62cd296ba2a7 353 /* Called before stepping the tick count after waking from tickless idle
fep 0:62cd296ba2a7 354 sleep. */
fep 0:62cd296ba2a7 355 #define traceINCREASE_TICK_COUNT( x )
fep 0:62cd296ba2a7 356 #endif
fep 0:62cd296ba2a7 357
fep 0:62cd296ba2a7 358 #ifndef traceLOW_POWER_IDLE_BEGIN
fep 0:62cd296ba2a7 359 /* Called immediately before entering tickless idle. */
fep 0:62cd296ba2a7 360 #define traceLOW_POWER_IDLE_BEGIN()
fep 0:62cd296ba2a7 361 #endif
fep 0:62cd296ba2a7 362
fep 0:62cd296ba2a7 363 #ifndef traceLOW_POWER_IDLE_END
fep 0:62cd296ba2a7 364 /* Called when returning to the Idle task after a tickless idle. */
fep 0:62cd296ba2a7 365 #define traceLOW_POWER_IDLE_END()
fep 0:62cd296ba2a7 366 #endif
fep 0:62cd296ba2a7 367
fep 0:62cd296ba2a7 368 #ifndef traceTASK_SWITCHED_OUT
fep 0:62cd296ba2a7 369 /* Called before a task has been selected to run. pxCurrentTCB holds a pointer
fep 0:62cd296ba2a7 370 to the task control block of the task being switched out. */
fep 0:62cd296ba2a7 371 #define traceTASK_SWITCHED_OUT()
fep 0:62cd296ba2a7 372 #endif
fep 0:62cd296ba2a7 373
fep 0:62cd296ba2a7 374 #ifndef traceTASK_PRIORITY_INHERIT
fep 0:62cd296ba2a7 375 /* Called when a task attempts to take a mutex that is already held by a
fep 0:62cd296ba2a7 376 lower priority task. pxTCBOfMutexHolder is a pointer to the TCB of the task
fep 0:62cd296ba2a7 377 that holds the mutex. uxInheritedPriority is the priority the mutex holder
fep 0:62cd296ba2a7 378 will inherit (the priority of the task that is attempting to obtain the
fep 0:62cd296ba2a7 379 muted. */
fep 0:62cd296ba2a7 380 #define traceTASK_PRIORITY_INHERIT( pxTCBOfMutexHolder, uxInheritedPriority )
fep 0:62cd296ba2a7 381 #endif
fep 0:62cd296ba2a7 382
fep 0:62cd296ba2a7 383 #ifndef traceTASK_PRIORITY_DISINHERIT
fep 0:62cd296ba2a7 384 /* Called when a task releases a mutex, the holding of which had resulted in
fep 0:62cd296ba2a7 385 the task inheriting the priority of a higher priority task.
fep 0:62cd296ba2a7 386 pxTCBOfMutexHolder is a pointer to the TCB of the task that is releasing the
fep 0:62cd296ba2a7 387 mutex. uxOriginalPriority is the task's configured (base) priority. */
fep 0:62cd296ba2a7 388 #define traceTASK_PRIORITY_DISINHERIT( pxTCBOfMutexHolder, uxOriginalPriority )
fep 0:62cd296ba2a7 389 #endif
fep 0:62cd296ba2a7 390
fep 0:62cd296ba2a7 391 #ifndef traceBLOCKING_ON_QUEUE_RECEIVE
fep 0:62cd296ba2a7 392 /* Task is about to block because it cannot read from a
fep 0:62cd296ba2a7 393 queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore
fep 0:62cd296ba2a7 394 upon which the read was attempted. pxCurrentTCB points to the TCB of the
fep 0:62cd296ba2a7 395 task that attempted the read. */
fep 0:62cd296ba2a7 396 #define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue )
fep 0:62cd296ba2a7 397 #endif
fep 0:62cd296ba2a7 398
fep 0:62cd296ba2a7 399 #ifndef traceBLOCKING_ON_QUEUE_SEND
fep 0:62cd296ba2a7 400 /* Task is about to block because it cannot write to a
fep 0:62cd296ba2a7 401 queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore
fep 0:62cd296ba2a7 402 upon which the write was attempted. pxCurrentTCB points to the TCB of the
fep 0:62cd296ba2a7 403 task that attempted the write. */
fep 0:62cd296ba2a7 404 #define traceBLOCKING_ON_QUEUE_SEND( pxQueue )
fep 0:62cd296ba2a7 405 #endif
fep 0:62cd296ba2a7 406
fep 0:62cd296ba2a7 407 #ifndef configCHECK_FOR_STACK_OVERFLOW
fep 0:62cd296ba2a7 408 #define configCHECK_FOR_STACK_OVERFLOW 0
fep 0:62cd296ba2a7 409 #endif
fep 0:62cd296ba2a7 410
fep 0:62cd296ba2a7 411 /* The following event macros are embedded in the kernel API calls. */
fep 0:62cd296ba2a7 412
fep 0:62cd296ba2a7 413 #ifndef traceMOVED_TASK_TO_READY_STATE
fep 0:62cd296ba2a7 414 #define traceMOVED_TASK_TO_READY_STATE( pxTCB )
fep 0:62cd296ba2a7 415 #endif
fep 0:62cd296ba2a7 416
fep 0:62cd296ba2a7 417 #ifndef tracePOST_MOVED_TASK_TO_READY_STATE
fep 0:62cd296ba2a7 418 #define tracePOST_MOVED_TASK_TO_READY_STATE( pxTCB )
fep 0:62cd296ba2a7 419 #endif
fep 0:62cd296ba2a7 420
fep 0:62cd296ba2a7 421 #ifndef traceQUEUE_CREATE
fep 0:62cd296ba2a7 422 #define traceQUEUE_CREATE( pxNewQueue )
fep 0:62cd296ba2a7 423 #endif
fep 0:62cd296ba2a7 424
fep 0:62cd296ba2a7 425 #ifndef traceQUEUE_CREATE_FAILED
fep 0:62cd296ba2a7 426 #define traceQUEUE_CREATE_FAILED( ucQueueType )
fep 0:62cd296ba2a7 427 #endif
fep 0:62cd296ba2a7 428
fep 0:62cd296ba2a7 429 #ifndef traceCREATE_MUTEX
fep 0:62cd296ba2a7 430 #define traceCREATE_MUTEX( pxNewQueue )
fep 0:62cd296ba2a7 431 #endif
fep 0:62cd296ba2a7 432
fep 0:62cd296ba2a7 433 #ifndef traceCREATE_MUTEX_FAILED
fep 0:62cd296ba2a7 434 #define traceCREATE_MUTEX_FAILED()
fep 0:62cd296ba2a7 435 #endif
fep 0:62cd296ba2a7 436
fep 0:62cd296ba2a7 437 #ifndef traceGIVE_MUTEX_RECURSIVE
fep 0:62cd296ba2a7 438 #define traceGIVE_MUTEX_RECURSIVE( pxMutex )
fep 0:62cd296ba2a7 439 #endif
fep 0:62cd296ba2a7 440
fep 0:62cd296ba2a7 441 #ifndef traceGIVE_MUTEX_RECURSIVE_FAILED
fep 0:62cd296ba2a7 442 #define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex )
fep 0:62cd296ba2a7 443 #endif
fep 0:62cd296ba2a7 444
fep 0:62cd296ba2a7 445 #ifndef traceTAKE_MUTEX_RECURSIVE
fep 0:62cd296ba2a7 446 #define traceTAKE_MUTEX_RECURSIVE( pxMutex )
fep 0:62cd296ba2a7 447 #endif
fep 0:62cd296ba2a7 448
fep 0:62cd296ba2a7 449 #ifndef traceTAKE_MUTEX_RECURSIVE_FAILED
fep 0:62cd296ba2a7 450 #define traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex )
fep 0:62cd296ba2a7 451 #endif
fep 0:62cd296ba2a7 452
fep 0:62cd296ba2a7 453 #ifndef traceCREATE_COUNTING_SEMAPHORE
fep 0:62cd296ba2a7 454 #define traceCREATE_COUNTING_SEMAPHORE()
fep 0:62cd296ba2a7 455 #endif
fep 0:62cd296ba2a7 456
fep 0:62cd296ba2a7 457 #ifndef traceCREATE_COUNTING_SEMAPHORE_FAILED
fep 0:62cd296ba2a7 458 #define traceCREATE_COUNTING_SEMAPHORE_FAILED()
fep 0:62cd296ba2a7 459 #endif
fep 0:62cd296ba2a7 460
fep 0:62cd296ba2a7 461 #ifndef traceQUEUE_SEND
fep 0:62cd296ba2a7 462 #define traceQUEUE_SEND( pxQueue )
fep 0:62cd296ba2a7 463 #endif
fep 0:62cd296ba2a7 464
fep 0:62cd296ba2a7 465 #ifndef traceQUEUE_SEND_FAILED
fep 0:62cd296ba2a7 466 #define traceQUEUE_SEND_FAILED( pxQueue )
fep 0:62cd296ba2a7 467 #endif
fep 0:62cd296ba2a7 468
fep 0:62cd296ba2a7 469 #ifndef traceQUEUE_RECEIVE
fep 0:62cd296ba2a7 470 #define traceQUEUE_RECEIVE( pxQueue )
fep 0:62cd296ba2a7 471 #endif
fep 0:62cd296ba2a7 472
fep 0:62cd296ba2a7 473 #ifndef traceQUEUE_PEEK
fep 0:62cd296ba2a7 474 #define traceQUEUE_PEEK( pxQueue )
fep 0:62cd296ba2a7 475 #endif
fep 0:62cd296ba2a7 476
fep 0:62cd296ba2a7 477 #ifndef traceQUEUE_PEEK_FROM_ISR
fep 0:62cd296ba2a7 478 #define traceQUEUE_PEEK_FROM_ISR( pxQueue )
fep 0:62cd296ba2a7 479 #endif
fep 0:62cd296ba2a7 480
fep 0:62cd296ba2a7 481 #ifndef traceQUEUE_RECEIVE_FAILED
fep 0:62cd296ba2a7 482 #define traceQUEUE_RECEIVE_FAILED( pxQueue )
fep 0:62cd296ba2a7 483 #endif
fep 0:62cd296ba2a7 484
fep 0:62cd296ba2a7 485 #ifndef traceQUEUE_SEND_FROM_ISR
fep 0:62cd296ba2a7 486 #define traceQUEUE_SEND_FROM_ISR( pxQueue )
fep 0:62cd296ba2a7 487 #endif
fep 0:62cd296ba2a7 488
fep 0:62cd296ba2a7 489 #ifndef traceQUEUE_SEND_FROM_ISR_FAILED
fep 0:62cd296ba2a7 490 #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue )
fep 0:62cd296ba2a7 491 #endif
fep 0:62cd296ba2a7 492
fep 0:62cd296ba2a7 493 #ifndef traceQUEUE_RECEIVE_FROM_ISR
fep 0:62cd296ba2a7 494 #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue )
fep 0:62cd296ba2a7 495 #endif
fep 0:62cd296ba2a7 496
fep 0:62cd296ba2a7 497 #ifndef traceQUEUE_RECEIVE_FROM_ISR_FAILED
fep 0:62cd296ba2a7 498 #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue )
fep 0:62cd296ba2a7 499 #endif
fep 0:62cd296ba2a7 500
fep 0:62cd296ba2a7 501 #ifndef traceQUEUE_PEEK_FROM_ISR_FAILED
fep 0:62cd296ba2a7 502 #define traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue )
fep 0:62cd296ba2a7 503 #endif
fep 0:62cd296ba2a7 504
fep 0:62cd296ba2a7 505 #ifndef traceQUEUE_DELETE
fep 0:62cd296ba2a7 506 #define traceQUEUE_DELETE( pxQueue )
fep 0:62cd296ba2a7 507 #endif
fep 0:62cd296ba2a7 508
fep 0:62cd296ba2a7 509 #ifndef traceTASK_CREATE
fep 0:62cd296ba2a7 510 #define traceTASK_CREATE( pxNewTCB )
fep 0:62cd296ba2a7 511 #endif
fep 0:62cd296ba2a7 512
fep 0:62cd296ba2a7 513 #ifndef traceTASK_CREATE_FAILED
fep 0:62cd296ba2a7 514 #define traceTASK_CREATE_FAILED()
fep 0:62cd296ba2a7 515 #endif
fep 0:62cd296ba2a7 516
fep 0:62cd296ba2a7 517 #ifndef traceTASK_DELETE
fep 0:62cd296ba2a7 518 #define traceTASK_DELETE( pxTaskToDelete )
fep 0:62cd296ba2a7 519 #endif
fep 0:62cd296ba2a7 520
fep 0:62cd296ba2a7 521 #ifndef traceTASK_DELAY_UNTIL
fep 0:62cd296ba2a7 522 #define traceTASK_DELAY_UNTIL( x )
fep 0:62cd296ba2a7 523 #endif
fep 0:62cd296ba2a7 524
fep 0:62cd296ba2a7 525 #ifndef traceTASK_DELAY
fep 0:62cd296ba2a7 526 #define traceTASK_DELAY()
fep 0:62cd296ba2a7 527 #endif
fep 0:62cd296ba2a7 528
fep 0:62cd296ba2a7 529 #ifndef traceTASK_PRIORITY_SET
fep 0:62cd296ba2a7 530 #define traceTASK_PRIORITY_SET( pxTask, uxNewPriority )
fep 0:62cd296ba2a7 531 #endif
fep 0:62cd296ba2a7 532
fep 0:62cd296ba2a7 533 #ifndef traceTASK_SUSPEND
fep 0:62cd296ba2a7 534 #define traceTASK_SUSPEND( pxTaskToSuspend )
fep 0:62cd296ba2a7 535 #endif
fep 0:62cd296ba2a7 536
fep 0:62cd296ba2a7 537 #ifndef traceTASK_RESUME
fep 0:62cd296ba2a7 538 #define traceTASK_RESUME( pxTaskToResume )
fep 0:62cd296ba2a7 539 #endif
fep 0:62cd296ba2a7 540
fep 0:62cd296ba2a7 541 #ifndef traceTASK_RESUME_FROM_ISR
fep 0:62cd296ba2a7 542 #define traceTASK_RESUME_FROM_ISR( pxTaskToResume )
fep 0:62cd296ba2a7 543 #endif
fep 0:62cd296ba2a7 544
fep 0:62cd296ba2a7 545 #ifndef traceTASK_INCREMENT_TICK
fep 0:62cd296ba2a7 546 #define traceTASK_INCREMENT_TICK( xTickCount )
fep 0:62cd296ba2a7 547 #endif
fep 0:62cd296ba2a7 548
fep 0:62cd296ba2a7 549 #ifndef traceTIMER_CREATE
fep 0:62cd296ba2a7 550 #define traceTIMER_CREATE( pxNewTimer )
fep 0:62cd296ba2a7 551 #endif
fep 0:62cd296ba2a7 552
fep 0:62cd296ba2a7 553 #ifndef traceTIMER_CREATE_FAILED
fep 0:62cd296ba2a7 554 #define traceTIMER_CREATE_FAILED()
fep 0:62cd296ba2a7 555 #endif
fep 0:62cd296ba2a7 556
fep 0:62cd296ba2a7 557 #ifndef traceTIMER_COMMAND_SEND
fep 0:62cd296ba2a7 558 #define traceTIMER_COMMAND_SEND( xTimer, xMessageID, xMessageValueValue, xReturn )
fep 0:62cd296ba2a7 559 #endif
fep 0:62cd296ba2a7 560
fep 0:62cd296ba2a7 561 #ifndef traceTIMER_EXPIRED
fep 0:62cd296ba2a7 562 #define traceTIMER_EXPIRED( pxTimer )
fep 0:62cd296ba2a7 563 #endif
fep 0:62cd296ba2a7 564
fep 0:62cd296ba2a7 565 #ifndef traceTIMER_COMMAND_RECEIVED
fep 0:62cd296ba2a7 566 #define traceTIMER_COMMAND_RECEIVED( pxTimer, xMessageID, xMessageValue )
fep 0:62cd296ba2a7 567 #endif
fep 0:62cd296ba2a7 568
fep 0:62cd296ba2a7 569 #ifndef traceMALLOC
fep 0:62cd296ba2a7 570 #define traceMALLOC( pvAddress, uiSize )
fep 0:62cd296ba2a7 571 #endif
fep 0:62cd296ba2a7 572
fep 0:62cd296ba2a7 573 #ifndef traceFREE
fep 0:62cd296ba2a7 574 #define traceFREE( pvAddress, uiSize )
fep 0:62cd296ba2a7 575 #endif
fep 0:62cd296ba2a7 576
fep 0:62cd296ba2a7 577 #ifndef traceEVENT_GROUP_CREATE
fep 0:62cd296ba2a7 578 #define traceEVENT_GROUP_CREATE( xEventGroup )
fep 0:62cd296ba2a7 579 #endif
fep 0:62cd296ba2a7 580
fep 0:62cd296ba2a7 581 #ifndef traceEVENT_GROUP_CREATE_FAILED
fep 0:62cd296ba2a7 582 #define traceEVENT_GROUP_CREATE_FAILED()
fep 0:62cd296ba2a7 583 #endif
fep 0:62cd296ba2a7 584
fep 0:62cd296ba2a7 585 #ifndef traceEVENT_GROUP_SYNC_BLOCK
fep 0:62cd296ba2a7 586 #define traceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor )
fep 0:62cd296ba2a7 587 #endif
fep 0:62cd296ba2a7 588
fep 0:62cd296ba2a7 589 #ifndef traceEVENT_GROUP_SYNC_END
fep 0:62cd296ba2a7 590 #define traceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred ) ( void ) xTimeoutOccurred
fep 0:62cd296ba2a7 591 #endif
fep 0:62cd296ba2a7 592
fep 0:62cd296ba2a7 593 #ifndef traceEVENT_GROUP_WAIT_BITS_BLOCK
fep 0:62cd296ba2a7 594 #define traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor )
fep 0:62cd296ba2a7 595 #endif
fep 0:62cd296ba2a7 596
fep 0:62cd296ba2a7 597 #ifndef traceEVENT_GROUP_WAIT_BITS_END
fep 0:62cd296ba2a7 598 #define traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred ) ( void ) xTimeoutOccurred
fep 0:62cd296ba2a7 599 #endif
fep 0:62cd296ba2a7 600
fep 0:62cd296ba2a7 601 #ifndef traceEVENT_GROUP_CLEAR_BITS
fep 0:62cd296ba2a7 602 #define traceEVENT_GROUP_CLEAR_BITS( xEventGroup, uxBitsToClear )
fep 0:62cd296ba2a7 603 #endif
fep 0:62cd296ba2a7 604
fep 0:62cd296ba2a7 605 #ifndef traceEVENT_GROUP_CLEAR_BITS_FROM_ISR
fep 0:62cd296ba2a7 606 #define traceEVENT_GROUP_CLEAR_BITS_FROM_ISR( xEventGroup, uxBitsToClear )
fep 0:62cd296ba2a7 607 #endif
fep 0:62cd296ba2a7 608
fep 0:62cd296ba2a7 609 #ifndef traceEVENT_GROUP_SET_BITS
fep 0:62cd296ba2a7 610 #define traceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet )
fep 0:62cd296ba2a7 611 #endif
fep 0:62cd296ba2a7 612
fep 0:62cd296ba2a7 613 #ifndef traceEVENT_GROUP_SET_BITS_FROM_ISR
fep 0:62cd296ba2a7 614 #define traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet )
fep 0:62cd296ba2a7 615 #endif
fep 0:62cd296ba2a7 616
fep 0:62cd296ba2a7 617 #ifndef traceEVENT_GROUP_DELETE
fep 0:62cd296ba2a7 618 #define traceEVENT_GROUP_DELETE( xEventGroup )
fep 0:62cd296ba2a7 619 #endif
fep 0:62cd296ba2a7 620
fep 0:62cd296ba2a7 621 #ifndef tracePEND_FUNC_CALL
fep 0:62cd296ba2a7 622 #define tracePEND_FUNC_CALL(xFunctionToPend, pvParameter1, ulParameter2, ret)
fep 0:62cd296ba2a7 623 #endif
fep 0:62cd296ba2a7 624
fep 0:62cd296ba2a7 625 #ifndef tracePEND_FUNC_CALL_FROM_ISR
fep 0:62cd296ba2a7 626 #define tracePEND_FUNC_CALL_FROM_ISR(xFunctionToPend, pvParameter1, ulParameter2, ret)
fep 0:62cd296ba2a7 627 #endif
fep 0:62cd296ba2a7 628
fep 0:62cd296ba2a7 629 #ifndef traceQUEUE_REGISTRY_ADD
fep 0:62cd296ba2a7 630 #define traceQUEUE_REGISTRY_ADD(xQueue, pcQueueName)
fep 0:62cd296ba2a7 631 #endif
fep 0:62cd296ba2a7 632
fep 0:62cd296ba2a7 633 #ifndef traceTASK_NOTIFY_TAKE_BLOCK
fep 0:62cd296ba2a7 634 #define traceTASK_NOTIFY_TAKE_BLOCK()
fep 0:62cd296ba2a7 635 #endif
fep 0:62cd296ba2a7 636
fep 0:62cd296ba2a7 637 #ifndef traceTASK_NOTIFY_TAKE
fep 0:62cd296ba2a7 638 #define traceTASK_NOTIFY_TAKE()
fep 0:62cd296ba2a7 639 #endif
fep 0:62cd296ba2a7 640
fep 0:62cd296ba2a7 641 #ifndef traceTASK_NOTIFY_WAIT_BLOCK
fep 0:62cd296ba2a7 642 #define traceTASK_NOTIFY_WAIT_BLOCK()
fep 0:62cd296ba2a7 643 #endif
fep 0:62cd296ba2a7 644
fep 0:62cd296ba2a7 645 #ifndef traceTASK_NOTIFY_WAIT
fep 0:62cd296ba2a7 646 #define traceTASK_NOTIFY_WAIT()
fep 0:62cd296ba2a7 647 #endif
fep 0:62cd296ba2a7 648
fep 0:62cd296ba2a7 649 #ifndef traceTASK_NOTIFY
fep 0:62cd296ba2a7 650 #define traceTASK_NOTIFY()
fep 0:62cd296ba2a7 651 #endif
fep 0:62cd296ba2a7 652
fep 0:62cd296ba2a7 653 #ifndef traceTASK_NOTIFY_FROM_ISR
fep 0:62cd296ba2a7 654 #define traceTASK_NOTIFY_FROM_ISR()
fep 0:62cd296ba2a7 655 #endif
fep 0:62cd296ba2a7 656
fep 0:62cd296ba2a7 657 #ifndef traceTASK_NOTIFY_GIVE_FROM_ISR
fep 0:62cd296ba2a7 658 #define traceTASK_NOTIFY_GIVE_FROM_ISR()
fep 0:62cd296ba2a7 659 #endif
fep 0:62cd296ba2a7 660
fep 0:62cd296ba2a7 661 #ifndef configGENERATE_RUN_TIME_STATS
fep 0:62cd296ba2a7 662 #define configGENERATE_RUN_TIME_STATS 0
fep 0:62cd296ba2a7 663 #endif
fep 0:62cd296ba2a7 664
fep 0:62cd296ba2a7 665 #if ( configGENERATE_RUN_TIME_STATS == 1 )
fep 0:62cd296ba2a7 666
fep 0:62cd296ba2a7 667 #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS
fep 0:62cd296ba2a7 668 #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.
fep 0:62cd296ba2a7 669 #endif /* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS */
fep 0:62cd296ba2a7 670
fep 0:62cd296ba2a7 671 #ifndef portGET_RUN_TIME_COUNTER_VALUE
fep 0:62cd296ba2a7 672 #ifndef portALT_GET_RUN_TIME_COUNTER_VALUE
fep 0:62cd296ba2a7 673 #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.
fep 0:62cd296ba2a7 674 #endif /* portALT_GET_RUN_TIME_COUNTER_VALUE */
fep 0:62cd296ba2a7 675 #endif /* portGET_RUN_TIME_COUNTER_VALUE */
fep 0:62cd296ba2a7 676
fep 0:62cd296ba2a7 677 #endif /* configGENERATE_RUN_TIME_STATS */
fep 0:62cd296ba2a7 678
fep 0:62cd296ba2a7 679 #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS
fep 0:62cd296ba2a7 680 #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
fep 0:62cd296ba2a7 681 #endif
fep 0:62cd296ba2a7 682
fep 0:62cd296ba2a7 683 #ifndef configUSE_MALLOC_FAILED_HOOK
fep 0:62cd296ba2a7 684 #define configUSE_MALLOC_FAILED_HOOK 0
fep 0:62cd296ba2a7 685 #endif
fep 0:62cd296ba2a7 686
fep 0:62cd296ba2a7 687 #ifndef portPRIVILEGE_BIT
fep 0:62cd296ba2a7 688 #define portPRIVILEGE_BIT ( ( UBaseType_t ) 0x00 )
fep 0:62cd296ba2a7 689 #endif
fep 0:62cd296ba2a7 690
fep 0:62cd296ba2a7 691 #ifndef portYIELD_WITHIN_API
fep 0:62cd296ba2a7 692 #define portYIELD_WITHIN_API portYIELD
fep 0:62cd296ba2a7 693 #endif
fep 0:62cd296ba2a7 694
fep 0:62cd296ba2a7 695 #ifndef portSUPPRESS_TICKS_AND_SLEEP
fep 0:62cd296ba2a7 696 #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime )
fep 0:62cd296ba2a7 697 #endif
fep 0:62cd296ba2a7 698
fep 0:62cd296ba2a7 699 #ifndef configEXPECTED_IDLE_TIME_BEFORE_SLEEP
fep 0:62cd296ba2a7 700 #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 2
fep 0:62cd296ba2a7 701 #endif
fep 0:62cd296ba2a7 702
fep 0:62cd296ba2a7 703 #if configEXPECTED_IDLE_TIME_BEFORE_SLEEP < 2
fep 0:62cd296ba2a7 704 #error configEXPECTED_IDLE_TIME_BEFORE_SLEEP must not be less than 2
fep 0:62cd296ba2a7 705 #endif
fep 0:62cd296ba2a7 706
fep 0:62cd296ba2a7 707 #ifndef configUSE_TICKLESS_IDLE
fep 0:62cd296ba2a7 708 #define configUSE_TICKLESS_IDLE 0
fep 0:62cd296ba2a7 709 #endif
fep 0:62cd296ba2a7 710
fep 0:62cd296ba2a7 711 #ifndef configPRE_SLEEP_PROCESSING
fep 0:62cd296ba2a7 712 #define configPRE_SLEEP_PROCESSING( x )
fep 0:62cd296ba2a7 713 #endif
fep 0:62cd296ba2a7 714
fep 0:62cd296ba2a7 715 #ifndef configPOST_SLEEP_PROCESSING
fep 0:62cd296ba2a7 716 #define configPOST_SLEEP_PROCESSING( x )
fep 0:62cd296ba2a7 717 #endif
fep 0:62cd296ba2a7 718
fep 0:62cd296ba2a7 719 #ifndef configUSE_QUEUE_SETS
fep 0:62cd296ba2a7 720 #define configUSE_QUEUE_SETS 0
fep 0:62cd296ba2a7 721 #endif
fep 0:62cd296ba2a7 722
fep 0:62cd296ba2a7 723 #ifndef portTASK_USES_FLOATING_POINT
fep 0:62cd296ba2a7 724 #define portTASK_USES_FLOATING_POINT()
fep 0:62cd296ba2a7 725 #endif
fep 0:62cd296ba2a7 726
fep 0:62cd296ba2a7 727 #ifndef configUSE_TIME_SLICING
fep 0:62cd296ba2a7 728 #define configUSE_TIME_SLICING 1
fep 0:62cd296ba2a7 729 #endif
fep 0:62cd296ba2a7 730
fep 0:62cd296ba2a7 731 #ifndef configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS
fep 0:62cd296ba2a7 732 #define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0
fep 0:62cd296ba2a7 733 #endif
fep 0:62cd296ba2a7 734
fep 0:62cd296ba2a7 735 #ifndef configUSE_STATS_FORMATTING_FUNCTIONS
fep 0:62cd296ba2a7 736 #define configUSE_STATS_FORMATTING_FUNCTIONS 0
fep 0:62cd296ba2a7 737 #endif
fep 0:62cd296ba2a7 738
fep 0:62cd296ba2a7 739 #ifndef portASSERT_IF_INTERRUPT_PRIORITY_INVALID
fep 0:62cd296ba2a7 740 #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID()
fep 0:62cd296ba2a7 741 #endif
fep 0:62cd296ba2a7 742
fep 0:62cd296ba2a7 743 #ifndef configUSE_TRACE_FACILITY
fep 0:62cd296ba2a7 744 #define configUSE_TRACE_FACILITY 0
fep 0:62cd296ba2a7 745 #endif
fep 0:62cd296ba2a7 746
fep 0:62cd296ba2a7 747 #ifndef mtCOVERAGE_TEST_MARKER
fep 0:62cd296ba2a7 748 #define mtCOVERAGE_TEST_MARKER()
fep 0:62cd296ba2a7 749 #endif
fep 0:62cd296ba2a7 750
fep 0:62cd296ba2a7 751 #ifndef mtCOVERAGE_TEST_DELAY
fep 0:62cd296ba2a7 752 #define mtCOVERAGE_TEST_DELAY()
fep 0:62cd296ba2a7 753 #endif
fep 0:62cd296ba2a7 754
fep 0:62cd296ba2a7 755 #ifndef portASSERT_IF_IN_ISR
fep 0:62cd296ba2a7 756 #define portASSERT_IF_IN_ISR()
fep 0:62cd296ba2a7 757 #endif
fep 0:62cd296ba2a7 758
fep 0:62cd296ba2a7 759 #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
fep 0:62cd296ba2a7 760 #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
fep 0:62cd296ba2a7 761 #endif
fep 0:62cd296ba2a7 762
fep 0:62cd296ba2a7 763 #ifndef configAPPLICATION_ALLOCATED_HEAP
fep 0:62cd296ba2a7 764 #define configAPPLICATION_ALLOCATED_HEAP 0
fep 0:62cd296ba2a7 765 #endif
fep 0:62cd296ba2a7 766
fep 0:62cd296ba2a7 767 #ifndef configUSE_TASK_NOTIFICATIONS
fep 0:62cd296ba2a7 768 #define configUSE_TASK_NOTIFICATIONS 1
fep 0:62cd296ba2a7 769 #endif
fep 0:62cd296ba2a7 770
fep 0:62cd296ba2a7 771 #ifndef portTICK_TYPE_IS_ATOMIC
fep 0:62cd296ba2a7 772 #define portTICK_TYPE_IS_ATOMIC 0
fep 0:62cd296ba2a7 773 #endif
fep 0:62cd296ba2a7 774
fep 0:62cd296ba2a7 775 #ifndef configSUPPORT_STATIC_ALLOCATION
fep 0:62cd296ba2a7 776 /* Defaults to 0 for backward compatibility. */
fep 0:62cd296ba2a7 777 #define configSUPPORT_STATIC_ALLOCATION 0
fep 0:62cd296ba2a7 778 #endif
fep 0:62cd296ba2a7 779
fep 0:62cd296ba2a7 780 #ifndef configSUPPORT_DYNAMIC_ALLOCATION
fep 0:62cd296ba2a7 781 /* Defaults to 1 for backward compatibility. */
fep 0:62cd296ba2a7 782 #define configSUPPORT_DYNAMIC_ALLOCATION 1
fep 0:62cd296ba2a7 783 #endif
fep 0:62cd296ba2a7 784
fep 0:62cd296ba2a7 785 /* Sanity check the configuration. */
fep 0:62cd296ba2a7 786 #if( configUSE_TICKLESS_IDLE != 0 )
fep 0:62cd296ba2a7 787 #if( INCLUDE_vTaskSuspend != 1 )
fep 0:62cd296ba2a7 788 #error INCLUDE_vTaskSuspend must be set to 1 if configUSE_TICKLESS_IDLE is not set to 0
fep 0:62cd296ba2a7 789 #endif /* INCLUDE_vTaskSuspend */
fep 0:62cd296ba2a7 790 #endif /* configUSE_TICKLESS_IDLE */
fep 0:62cd296ba2a7 791
fep 0:62cd296ba2a7 792 #if( ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) )
fep 0:62cd296ba2a7 793 #error configSUPPORT_STATIC_ALLOCATION and configSUPPORT_DYNAMIC_ALLOCATION cannot both be 0, but can both be 1.
fep 0:62cd296ba2a7 794 #endif
fep 0:62cd296ba2a7 795
fep 0:62cd296ba2a7 796 #if( ( configUSE_RECURSIVE_MUTEXES == 1 ) && ( configUSE_MUTEXES != 1 ) )
fep 0:62cd296ba2a7 797 #error configUSE_MUTEXES must be set to 1 to use recursive mutexes
fep 0:62cd296ba2a7 798 #endif
fep 0:62cd296ba2a7 799
fep 0:62cd296ba2a7 800 #if( portTICK_TYPE_IS_ATOMIC == 0 )
fep 0:62cd296ba2a7 801 /* Either variables of tick type cannot be read atomically, or
fep 0:62cd296ba2a7 802 portTICK_TYPE_IS_ATOMIC was not set - map the critical sections used when
fep 0:62cd296ba2a7 803 the tick count is returned to the standard critical section macros. */
fep 0:62cd296ba2a7 804 #define portTICK_TYPE_ENTER_CRITICAL() portENTER_CRITICAL()
fep 0:62cd296ba2a7 805 #define portTICK_TYPE_EXIT_CRITICAL() portEXIT_CRITICAL()
fep 0:62cd296ba2a7 806 #define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR() portSET_INTERRUPT_MASK_FROM_ISR()
fep 0:62cd296ba2a7 807 #define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x ) portCLEAR_INTERRUPT_MASK_FROM_ISR( ( x ) )
fep 0:62cd296ba2a7 808 #else
fep 0:62cd296ba2a7 809 /* The tick type can be read atomically, so critical sections used when the
fep 0:62cd296ba2a7 810 tick count is returned can be defined away. */
fep 0:62cd296ba2a7 811 #define portTICK_TYPE_ENTER_CRITICAL()
fep 0:62cd296ba2a7 812 #define portTICK_TYPE_EXIT_CRITICAL()
fep 0:62cd296ba2a7 813 #define portTICK_TYPE_SET_INTERRUPT_MASK_FROM_ISR() 0
fep 0:62cd296ba2a7 814 #define portTICK_TYPE_CLEAR_INTERRUPT_MASK_FROM_ISR( x ) ( void ) x
fep 0:62cd296ba2a7 815 #endif
fep 0:62cd296ba2a7 816
fep 0:62cd296ba2a7 817 /* Definitions to allow backward compatibility with FreeRTOS versions prior to
fep 0:62cd296ba2a7 818 V8 if desired. */
fep 0:62cd296ba2a7 819 #ifndef configENABLE_BACKWARD_COMPATIBILITY
fep 0:62cd296ba2a7 820 #define configENABLE_BACKWARD_COMPATIBILITY 1
fep 0:62cd296ba2a7 821 #endif
fep 0:62cd296ba2a7 822
fep 0:62cd296ba2a7 823 #if configENABLE_BACKWARD_COMPATIBILITY == 1
fep 0:62cd296ba2a7 824 #define eTaskStateGet eTaskGetState
fep 0:62cd296ba2a7 825 #define portTickType TickType_t
fep 0:62cd296ba2a7 826 #define xTaskHandle TaskHandle_t
fep 0:62cd296ba2a7 827 #define xQueueHandle QueueHandle_t
fep 0:62cd296ba2a7 828 #define xSemaphoreHandle SemaphoreHandle_t
fep 0:62cd296ba2a7 829 #define xQueueSetHandle QueueSetHandle_t
fep 0:62cd296ba2a7 830 #define xQueueSetMemberHandle QueueSetMemberHandle_t
fep 0:62cd296ba2a7 831 #define xTimeOutType TimeOut_t
fep 0:62cd296ba2a7 832 #define xMemoryRegion MemoryRegion_t
fep 0:62cd296ba2a7 833 #define xTaskParameters TaskParameters_t
fep 0:62cd296ba2a7 834 #define xTaskStatusType TaskStatus_t
fep 0:62cd296ba2a7 835 #define xTimerHandle TimerHandle_t
fep 0:62cd296ba2a7 836 #define xCoRoutineHandle CoRoutineHandle_t
fep 0:62cd296ba2a7 837 #define pdTASK_HOOK_CODE TaskHookFunction_t
fep 0:62cd296ba2a7 838 #define portTICK_RATE_MS portTICK_PERIOD_MS
fep 0:62cd296ba2a7 839 #define pcTaskGetTaskName pcTaskGetName
fep 0:62cd296ba2a7 840 #define pcTimerGetTimerName pcTimerGetName
fep 0:62cd296ba2a7 841 #define pcQueueGetQueueName pcQueueGetName
fep 0:62cd296ba2a7 842 #define vTaskGetTaskInfo vTaskGetInfo
fep 0:62cd296ba2a7 843
fep 0:62cd296ba2a7 844 /* Backward compatibility within the scheduler code only - these definitions
fep 0:62cd296ba2a7 845 are not really required but are included for completeness. */
fep 0:62cd296ba2a7 846 #define tmrTIMER_CALLBACK TimerCallbackFunction_t
fep 0:62cd296ba2a7 847 #define pdTASK_CODE TaskFunction_t
fep 0:62cd296ba2a7 848 #define xListItem ListItem_t
fep 0:62cd296ba2a7 849 #define xList List_t
fep 0:62cd296ba2a7 850 #endif /* configENABLE_BACKWARD_COMPATIBILITY */
fep 0:62cd296ba2a7 851
fep 0:62cd296ba2a7 852 #if( configUSE_ALTERNATIVE_API != 0 )
fep 0:62cd296ba2a7 853 #error The alternative API was deprecated some time ago, and was removed in FreeRTOS V9.0 0
fep 0:62cd296ba2a7 854 #endif
fep 0:62cd296ba2a7 855
fep 0:62cd296ba2a7 856 /* Set configUSE_TASK_FPU_SUPPORT to 0 to omit floating point support even
fep 0:62cd296ba2a7 857 if floating point hardware is otherwise supported by the FreeRTOS port in use.
fep 0:62cd296ba2a7 858 This constant is not supported by all FreeRTOS ports that include floating
fep 0:62cd296ba2a7 859 point support. */
fep 0:62cd296ba2a7 860 #ifndef configUSE_TASK_FPU_SUPPORT
fep 0:62cd296ba2a7 861 #define configUSE_TASK_FPU_SUPPORT 1
fep 0:62cd296ba2a7 862 #endif
fep 0:62cd296ba2a7 863
fep 0:62cd296ba2a7 864 /*
fep 0:62cd296ba2a7 865 * In line with software engineering best practice, FreeRTOS implements a strict
fep 0:62cd296ba2a7 866 * data hiding policy, so the real structures used by FreeRTOS to maintain the
fep 0:62cd296ba2a7 867 * state of tasks, queues, semaphores, etc. are not accessible to the application
fep 0:62cd296ba2a7 868 * code. However, if the application writer wants to statically allocate such
fep 0:62cd296ba2a7 869 * an object then the size of the object needs to be know. Dummy structures
fep 0:62cd296ba2a7 870 * that are guaranteed to have the same size and alignment requirements of the
fep 0:62cd296ba2a7 871 * real objects are used for this purpose. The dummy list and list item
fep 0:62cd296ba2a7 872 * structures below are used for inclusion in such a dummy structure.
fep 0:62cd296ba2a7 873 */
fep 0:62cd296ba2a7 874 struct xSTATIC_LIST_ITEM
fep 0:62cd296ba2a7 875 {
fep 0:62cd296ba2a7 876 TickType_t xDummy1;
fep 0:62cd296ba2a7 877 void *pvDummy2[ 4 ];
fep 0:62cd296ba2a7 878 };
fep 0:62cd296ba2a7 879 typedef struct xSTATIC_LIST_ITEM StaticListItem_t;
fep 0:62cd296ba2a7 880
fep 0:62cd296ba2a7 881 /* See the comments above the struct xSTATIC_LIST_ITEM definition. */
fep 0:62cd296ba2a7 882 struct xSTATIC_MINI_LIST_ITEM
fep 0:62cd296ba2a7 883 {
fep 0:62cd296ba2a7 884 TickType_t xDummy1;
fep 0:62cd296ba2a7 885 void *pvDummy2[ 2 ];
fep 0:62cd296ba2a7 886 };
fep 0:62cd296ba2a7 887 typedef struct xSTATIC_MINI_LIST_ITEM StaticMiniListItem_t;
fep 0:62cd296ba2a7 888
fep 0:62cd296ba2a7 889 /* See the comments above the struct xSTATIC_LIST_ITEM definition. */
fep 0:62cd296ba2a7 890 typedef struct xSTATIC_LIST
fep 0:62cd296ba2a7 891 {
fep 0:62cd296ba2a7 892 UBaseType_t uxDummy1;
fep 0:62cd296ba2a7 893 void *pvDummy2;
fep 0:62cd296ba2a7 894 StaticMiniListItem_t xDummy3;
fep 0:62cd296ba2a7 895 } StaticList_t;
fep 0:62cd296ba2a7 896
fep 0:62cd296ba2a7 897 /*
fep 0:62cd296ba2a7 898 * In line with software engineering best practice, especially when supplying a
fep 0:62cd296ba2a7 899 * library that is likely to change in future versions, FreeRTOS implements a
fep 0:62cd296ba2a7 900 * strict data hiding policy. This means the Task structure used internally by
fep 0:62cd296ba2a7 901 * FreeRTOS is not accessible to application code. However, if the application
fep 0:62cd296ba2a7 902 * writer wants to statically allocate the memory required to create a task then
fep 0:62cd296ba2a7 903 * the size of the task object needs to be know. The StaticTask_t structure
fep 0:62cd296ba2a7 904 * below is provided for this purpose. Its sizes and alignment requirements are
fep 0:62cd296ba2a7 905 * guaranteed to match those of the genuine structure, no matter which
fep 0:62cd296ba2a7 906 * architecture is being used, and no matter how the values in FreeRTOSConfig.h
fep 0:62cd296ba2a7 907 * are set. Its contents are somewhat obfuscated in the hope users will
fep 0:62cd296ba2a7 908 * recognise that it would be unwise to make direct use of the structure members.
fep 0:62cd296ba2a7 909 */
fep 0:62cd296ba2a7 910 typedef struct xSTATIC_TCB
fep 0:62cd296ba2a7 911 {
fep 0:62cd296ba2a7 912 void *pxDummy1;
fep 0:62cd296ba2a7 913 #if ( portUSING_MPU_WRAPPERS == 1 )
fep 0:62cd296ba2a7 914 xMPU_SETTINGS xDummy2;
fep 0:62cd296ba2a7 915 #endif
fep 0:62cd296ba2a7 916 StaticListItem_t xDummy3[ 2 ];
fep 0:62cd296ba2a7 917 UBaseType_t uxDummy5;
fep 0:62cd296ba2a7 918 void *pxDummy6;
fep 0:62cd296ba2a7 919 uint8_t ucDummy7[ configMAX_TASK_NAME_LEN ];
fep 0:62cd296ba2a7 920 #if ( portSTACK_GROWTH > 0 )
fep 0:62cd296ba2a7 921 void *pxDummy8;
fep 0:62cd296ba2a7 922 #endif
fep 0:62cd296ba2a7 923 #if ( portCRITICAL_NESTING_IN_TCB == 1 )
fep 0:62cd296ba2a7 924 UBaseType_t uxDummy9;
fep 0:62cd296ba2a7 925 #endif
fep 0:62cd296ba2a7 926 #if ( configUSE_TRACE_FACILITY == 1 )
fep 0:62cd296ba2a7 927 UBaseType_t uxDummy10[ 2 ];
fep 0:62cd296ba2a7 928 #endif
fep 0:62cd296ba2a7 929 #if ( configUSE_MUTEXES == 1 )
fep 0:62cd296ba2a7 930 UBaseType_t uxDummy12[ 2 ];
fep 0:62cd296ba2a7 931 #endif
fep 0:62cd296ba2a7 932 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
fep 0:62cd296ba2a7 933 void *pxDummy14;
fep 0:62cd296ba2a7 934 #endif
fep 0:62cd296ba2a7 935 #if( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 )
fep 0:62cd296ba2a7 936 void *pvDummy15[ configNUM_THREAD_LOCAL_STORAGE_POINTERS ];
fep 0:62cd296ba2a7 937 #endif
fep 0:62cd296ba2a7 938 #if ( configGENERATE_RUN_TIME_STATS == 1 )
fep 0:62cd296ba2a7 939 uint32_t ulDummy16;
fep 0:62cd296ba2a7 940 #endif
fep 0:62cd296ba2a7 941 #if ( configUSE_NEWLIB_REENTRANT == 1 )
fep 0:62cd296ba2a7 942 struct _reent xDummy17;
fep 0:62cd296ba2a7 943 #endif
fep 0:62cd296ba2a7 944 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
fep 0:62cd296ba2a7 945 uint32_t ulDummy18;
fep 0:62cd296ba2a7 946 uint8_t ucDummy19;
fep 0:62cd296ba2a7 947 #endif
fep 0:62cd296ba2a7 948 #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
fep 0:62cd296ba2a7 949 uint8_t uxDummy20;
fep 0:62cd296ba2a7 950 #endif
fep 0:62cd296ba2a7 951
fep 0:62cd296ba2a7 952 } StaticTask_t;
fep 0:62cd296ba2a7 953
fep 0:62cd296ba2a7 954 /*
fep 0:62cd296ba2a7 955 * In line with software engineering best practice, especially when supplying a
fep 0:62cd296ba2a7 956 * library that is likely to change in future versions, FreeRTOS implements a
fep 0:62cd296ba2a7 957 * strict data hiding policy. This means the Queue structure used internally by
fep 0:62cd296ba2a7 958 * FreeRTOS is not accessible to application code. However, if the application
fep 0:62cd296ba2a7 959 * writer wants to statically allocate the memory required to create a queue
fep 0:62cd296ba2a7 960 * then the size of the queue object needs to be know. The StaticQueue_t
fep 0:62cd296ba2a7 961 * structure below is provided for this purpose. Its sizes and alignment
fep 0:62cd296ba2a7 962 * requirements are guaranteed to match those of the genuine structure, no
fep 0:62cd296ba2a7 963 * matter which architecture is being used, and no matter how the values in
fep 0:62cd296ba2a7 964 * FreeRTOSConfig.h are set. Its contents are somewhat obfuscated in the hope
fep 0:62cd296ba2a7 965 * users will recognise that it would be unwise to make direct use of the
fep 0:62cd296ba2a7 966 * structure members.
fep 0:62cd296ba2a7 967 */
fep 0:62cd296ba2a7 968 typedef struct xSTATIC_QUEUE
fep 0:62cd296ba2a7 969 {
fep 0:62cd296ba2a7 970 void *pvDummy1[ 3 ];
fep 0:62cd296ba2a7 971
fep 0:62cd296ba2a7 972 union
fep 0:62cd296ba2a7 973 {
fep 0:62cd296ba2a7 974 void *pvDummy2;
fep 0:62cd296ba2a7 975 UBaseType_t uxDummy2;
fep 0:62cd296ba2a7 976 } u;
fep 0:62cd296ba2a7 977
fep 0:62cd296ba2a7 978 StaticList_t xDummy3[ 2 ];
fep 0:62cd296ba2a7 979 UBaseType_t uxDummy4[ 3 ];
fep 0:62cd296ba2a7 980 uint8_t ucDummy5[ 2 ];
fep 0:62cd296ba2a7 981
fep 0:62cd296ba2a7 982 #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
fep 0:62cd296ba2a7 983 uint8_t ucDummy6;
fep 0:62cd296ba2a7 984 #endif
fep 0:62cd296ba2a7 985
fep 0:62cd296ba2a7 986 #if ( configUSE_QUEUE_SETS == 1 )
fep 0:62cd296ba2a7 987 void *pvDummy7;
fep 0:62cd296ba2a7 988 #endif
fep 0:62cd296ba2a7 989
fep 0:62cd296ba2a7 990 #if ( configUSE_TRACE_FACILITY == 1 )
fep 0:62cd296ba2a7 991 UBaseType_t uxDummy8;
fep 0:62cd296ba2a7 992 uint8_t ucDummy9;
fep 0:62cd296ba2a7 993 #endif
fep 0:62cd296ba2a7 994
fep 0:62cd296ba2a7 995 } StaticQueue_t;
fep 0:62cd296ba2a7 996 typedef StaticQueue_t StaticSemaphore_t;
fep 0:62cd296ba2a7 997
fep 0:62cd296ba2a7 998 /*
fep 0:62cd296ba2a7 999 * In line with software engineering best practice, especially when supplying a
fep 0:62cd296ba2a7 1000 * library that is likely to change in future versions, FreeRTOS implements a
fep 0:62cd296ba2a7 1001 * strict data hiding policy. This means the event group structure used
fep 0:62cd296ba2a7 1002 * internally by FreeRTOS is not accessible to application code. However, if
fep 0:62cd296ba2a7 1003 * the application writer wants to statically allocate the memory required to
fep 0:62cd296ba2a7 1004 * create an event group then the size of the event group object needs to be
fep 0:62cd296ba2a7 1005 * know. The StaticEventGroup_t structure below is provided for this purpose.
fep 0:62cd296ba2a7 1006 * Its sizes and alignment requirements are guaranteed to match those of the
fep 0:62cd296ba2a7 1007 * genuine structure, no matter which architecture is being used, and no matter
fep 0:62cd296ba2a7 1008 * how the values in FreeRTOSConfig.h are set. Its contents are somewhat
fep 0:62cd296ba2a7 1009 * obfuscated in the hope users will recognise that it would be unwise to make
fep 0:62cd296ba2a7 1010 * direct use of the structure members.
fep 0:62cd296ba2a7 1011 */
fep 0:62cd296ba2a7 1012 typedef struct xSTATIC_EVENT_GROUP
fep 0:62cd296ba2a7 1013 {
fep 0:62cd296ba2a7 1014 TickType_t xDummy1;
fep 0:62cd296ba2a7 1015 StaticList_t xDummy2;
fep 0:62cd296ba2a7 1016
fep 0:62cd296ba2a7 1017 #if( configUSE_TRACE_FACILITY == 1 )
fep 0:62cd296ba2a7 1018 UBaseType_t uxDummy3;
fep 0:62cd296ba2a7 1019 #endif
fep 0:62cd296ba2a7 1020
fep 0:62cd296ba2a7 1021 #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
fep 0:62cd296ba2a7 1022 uint8_t ucDummy4;
fep 0:62cd296ba2a7 1023 #endif
fep 0:62cd296ba2a7 1024
fep 0:62cd296ba2a7 1025 } StaticEventGroup_t;
fep 0:62cd296ba2a7 1026
fep 0:62cd296ba2a7 1027 /*
fep 0:62cd296ba2a7 1028 * In line with software engineering best practice, especially when supplying a
fep 0:62cd296ba2a7 1029 * library that is likely to change in future versions, FreeRTOS implements a
fep 0:62cd296ba2a7 1030 * strict data hiding policy. This means the software timer structure used
fep 0:62cd296ba2a7 1031 * internally by FreeRTOS is not accessible to application code. However, if
fep 0:62cd296ba2a7 1032 * the application writer wants to statically allocate the memory required to
fep 0:62cd296ba2a7 1033 * create a software timer then the size of the queue object needs to be know.
fep 0:62cd296ba2a7 1034 * The StaticTimer_t structure below is provided for this purpose. Its sizes
fep 0:62cd296ba2a7 1035 * and alignment requirements are guaranteed to match those of the genuine
fep 0:62cd296ba2a7 1036 * structure, no matter which architecture is being used, and no matter how the
fep 0:62cd296ba2a7 1037 * values in FreeRTOSConfig.h are set. Its contents are somewhat obfuscated in
fep 0:62cd296ba2a7 1038 * the hope users will recognise that it would be unwise to make direct use of
fep 0:62cd296ba2a7 1039 * the structure members.
fep 0:62cd296ba2a7 1040 */
fep 0:62cd296ba2a7 1041 typedef struct xSTATIC_TIMER
fep 0:62cd296ba2a7 1042 {
fep 0:62cd296ba2a7 1043 void *pvDummy1;
fep 0:62cd296ba2a7 1044 StaticListItem_t xDummy2;
fep 0:62cd296ba2a7 1045 TickType_t xDummy3;
fep 0:62cd296ba2a7 1046 UBaseType_t uxDummy4;
fep 0:62cd296ba2a7 1047 void *pvDummy5[ 2 ];
fep 0:62cd296ba2a7 1048 #if( configUSE_TRACE_FACILITY == 1 )
fep 0:62cd296ba2a7 1049 UBaseType_t uxDummy6;
fep 0:62cd296ba2a7 1050 #endif
fep 0:62cd296ba2a7 1051
fep 0:62cd296ba2a7 1052 #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
fep 0:62cd296ba2a7 1053 uint8_t ucDummy7;
fep 0:62cd296ba2a7 1054 #endif
fep 0:62cd296ba2a7 1055
fep 0:62cd296ba2a7 1056 } StaticTimer_t;
fep 0:62cd296ba2a7 1057
fep 0:62cd296ba2a7 1058 #ifdef __cplusplus
fep 0:62cd296ba2a7 1059 }
fep 0:62cd296ba2a7 1060 #endif
fep 0:62cd296ba2a7 1061
fep 0:62cd296ba2a7 1062 #endif /* INC_FREERTOS_H */
fep 0:62cd296ba2a7 1063
fep 0:62cd296ba2a7 1064