uc-sdk
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
FreeRTOS.h
Go to the documentation of this file.
1 /*
2  FreeRTOS V7.5.3 - Copyright (C) 2013 Real Time Engineers Ltd.
3  All rights reserved
4 
5  VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
6 
7  ***************************************************************************
8  * *
9  * FreeRTOS provides completely free yet professionally developed, *
10  * robust, strictly quality controlled, supported, and cross *
11  * platform software that has become a de facto standard. *
12  * *
13  * Help yourself get started quickly and support the FreeRTOS *
14  * project by purchasing a FreeRTOS tutorial book, reference *
15  * manual, or both from: http://www.FreeRTOS.org/Documentation *
16  * *
17  * Thank you! *
18  * *
19  ***************************************************************************
20 
21  This file is part of the FreeRTOS distribution.
22 
23  FreeRTOS is free software; you can redistribute it and/or modify it under
24  the terms of the GNU General Public License (version 2) as published by the
25  Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
26 
27  >>! NOTE: The modification to the GPL is included to allow you to distribute
28  >>! a combined work that includes FreeRTOS without being obliged to provide
29  >>! the source code for proprietary components outside of the FreeRTOS
30  >>! kernel.
31 
32  FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
33  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
34  FOR A PARTICULAR PURPOSE. Full license text is available from the following
35  link: http://www.freertos.org/a00114.html
36 
37  1 tab == 4 spaces!
38 
39  ***************************************************************************
40  * *
41  * Having a problem? Start by reading the FAQ "My application does *
42  * not run, what could be wrong?" *
43  * *
44  * http://www.FreeRTOS.org/FAQHelp.html *
45  * *
46  ***************************************************************************
47 
48  http://www.FreeRTOS.org - Documentation, books, training, latest versions,
49  license and Real Time Engineers Ltd. contact details.
50 
51  http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
52  including FreeRTOS+Trace - an indispensable productivity tool, a DOS
53  compatible FAT file system, and our tiny thread aware UDP/IP stack.
54 
55  http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
56  Integrity Systems to sell under the OpenRTOS brand. Low cost OpenRTOS
57  licenses offer ticketed support, indemnification and middleware.
58 
59  http://www.SafeRTOS.com - High Integrity Systems also provide a safety
60  engineered and independently SIL3 certified version for use in safety and
61  mission critical applications that require provable dependability.
62 
63  1 tab == 4 spaces!
64 */
65 
66 #ifndef INC_FREERTOS_H
67 #define INC_FREERTOS_H
68 
69 
70 /*
71  * Include the generic headers required for the FreeRTOS port being used.
72  */
73 #include <stddef.h>
74 
75 /* Basic FreeRTOS definitions. */
76 #include "projdefs.h"
77 
78 /* Application specific configuration options. */
79 #include "FreeRTOSConfig.h"
80 
81 /* configUSE_PORT_OPTIMISED_TASK_SELECTION must be defined before portable.h
82 is included as it is used by the port layer. */
83 #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
84  #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
85 #endif
86 
87 /* Definitions specific to the port being used. */
88 #include "portable.h"
89 
90 
91 /* Defines the prototype to which the application task hook function must
92 conform. */
93 typedef portBASE_TYPE (*pdTASK_HOOK_CODE)( void * );
94 
95 
96 
97 
98 
99 /*
100  * Check all the required application specific macros have been defined.
101  * These macros are application specific and (as downloaded) are defined
102  * within FreeRTOSConfig.h.
103  */
104 
105 #ifndef configUSE_PREEMPTION
106  #error Missing definition: configUSE_PREEMPTION should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
107 #endif
108 
109 #ifndef configUSE_IDLE_HOOK
110  #error Missing definition: configUSE_IDLE_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
111 #endif
112 
113 #ifndef configUSE_TICK_HOOK
114  #error Missing definition: configUSE_TICK_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
115 #endif
116 
117 #ifndef configUSE_CO_ROUTINES
118  #error Missing definition: configUSE_CO_ROUTINES should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
119 #endif
120 
121 #ifndef INCLUDE_vTaskPrioritySet
122  #error Missing definition: INCLUDE_vTaskPrioritySet should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
123 #endif
124 
125 #ifndef INCLUDE_uxTaskPriorityGet
126  #error Missing definition: INCLUDE_uxTaskPriorityGet should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
127 #endif
128 
129 #ifndef INCLUDE_vTaskDelete
130  #error Missing definition: INCLUDE_vTaskDelete should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
131 #endif
132 
133 #ifndef INCLUDE_vTaskSuspend
134  #error Missing definition: INCLUDE_vTaskSuspend should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
135 #endif
136 
137 #ifndef INCLUDE_vTaskDelayUntil
138  #error Missing definition: INCLUDE_vTaskDelayUntil should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
139 #endif
140 
141 #ifndef INCLUDE_vTaskDelay
142  #error Missing definition: INCLUDE_vTaskDelay should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
143 #endif
144 
145 #ifndef configUSE_16_BIT_TICKS
146  #error Missing definition: configUSE_16_BIT_TICKS should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.
147 #endif
148 
149 #ifndef INCLUDE_xTaskGetIdleTaskHandle
150  #define INCLUDE_xTaskGetIdleTaskHandle 0
151 #endif
152 
153 #ifndef INCLUDE_xTimerGetTimerDaemonTaskHandle
154  #define INCLUDE_xTimerGetTimerDaemonTaskHandle 0
155 #endif
156 
157 #ifndef INCLUDE_xQueueGetMutexHolder
158  #define INCLUDE_xQueueGetMutexHolder 0
159 #endif
160 
161 #ifndef INCLUDE_xSemaphoreGetMutexHolder
162  #define INCLUDE_xSemaphoreGetMutexHolder INCLUDE_xQueueGetMutexHolder
163 #endif
164 
165 #ifndef INCLUDE_pcTaskGetTaskName
166  #define INCLUDE_pcTaskGetTaskName 0
167 #endif
168 
169 #ifndef configUSE_APPLICATION_TASK_TAG
170  #define configUSE_APPLICATION_TASK_TAG 0
171 #endif
172 
173 #ifndef INCLUDE_uxTaskGetStackHighWaterMark
174  #define INCLUDE_uxTaskGetStackHighWaterMark 0
175 #endif
176 
177 #ifndef INCLUDE_eTaskGetState
178  #define INCLUDE_eTaskGetState 0
179 #endif
180 
181 #ifndef configUSE_RECURSIVE_MUTEXES
182  #define configUSE_RECURSIVE_MUTEXES 0
183 #endif
184 
185 #ifndef configUSE_MUTEXES
186  #define configUSE_MUTEXES 0
187 #endif
188 
189 #ifndef configUSE_TIMERS
190  #define configUSE_TIMERS 0
191 #endif
192 
193 #ifndef configUSE_COUNTING_SEMAPHORES
194  #define configUSE_COUNTING_SEMAPHORES 0
195 #endif
196 
197 #ifndef configUSE_ALTERNATIVE_API
198  #define configUSE_ALTERNATIVE_API 0
199 #endif
200 
201 #ifndef portCRITICAL_NESTING_IN_TCB
202  #define portCRITICAL_NESTING_IN_TCB 0
203 #endif
204 
205 #ifndef configMAX_TASK_NAME_LEN
206  #define configMAX_TASK_NAME_LEN 16
207 #endif
208 
209 #ifndef configIDLE_SHOULD_YIELD
210  #define configIDLE_SHOULD_YIELD 1
211 #endif
212 
213 #if configMAX_TASK_NAME_LEN < 1
214  #error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h
215 #endif
216 
217 #ifndef INCLUDE_xTaskResumeFromISR
218  #define INCLUDE_xTaskResumeFromISR 1
219 #endif
220 
221 #ifndef configASSERT
222  #define configASSERT( x )
223  #define configASSERT_DEFINED 0
224 #else
225  #define configASSERT_DEFINED 1
226 #endif
227 
228 /* The timers module relies on xTaskGetSchedulerState(). */
229 #if configUSE_TIMERS == 1
230 
231  #ifndef configTIMER_TASK_PRIORITY
232  #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_PRIORITY must also be defined.
233  #endif /* configTIMER_TASK_PRIORITY */
234 
235  #ifndef configTIMER_QUEUE_LENGTH
236  #error If configUSE_TIMERS is set to 1 then configTIMER_QUEUE_LENGTH must also be defined.
237  #endif /* configTIMER_QUEUE_LENGTH */
238 
239  #ifndef configTIMER_TASK_STACK_DEPTH
240  #error If configUSE_TIMERS is set to 1 then configTIMER_TASK_STACK_DEPTH must also be defined.
241  #endif /* configTIMER_TASK_STACK_DEPTH */
242 
243 #endif /* configUSE_TIMERS */
244 
245 #ifndef INCLUDE_xTaskGetSchedulerState
246  #define INCLUDE_xTaskGetSchedulerState 0
247 #endif
248 
249 #ifndef INCLUDE_xTaskGetCurrentTaskHandle
250  #define INCLUDE_xTaskGetCurrentTaskHandle 0
251 #endif
252 
253 
254 #ifndef portSET_INTERRUPT_MASK_FROM_ISR
255  #define portSET_INTERRUPT_MASK_FROM_ISR() 0
256 #endif
257 
258 #ifndef portCLEAR_INTERRUPT_MASK_FROM_ISR
259  #define portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedStatusValue ) ( void ) uxSavedStatusValue
260 #endif
261 
262 #ifndef portCLEAN_UP_TCB
263  #define portCLEAN_UP_TCB( pxTCB ) ( void ) pxTCB
264 #endif
265 
266 #ifndef portSETUP_TCB
267  #define portSETUP_TCB( pxTCB ) ( void ) pxTCB
268 #endif
269 
270 #ifndef configQUEUE_REGISTRY_SIZE
271  #define configQUEUE_REGISTRY_SIZE 0U
272 #endif
273 
274 #if ( configQUEUE_REGISTRY_SIZE < 1 )
275  #define vQueueAddToRegistry( xQueue, pcName )
276  #define vQueueUnregisterQueue( xQueue )
277 #endif
278 
279 #ifndef portPOINTER_SIZE_TYPE
280  #define portPOINTER_SIZE_TYPE unsigned long
281 #endif
282 
283 /* Remove any unused trace macros. */
284 #ifndef traceSTART
285  /* Used to perform any necessary initialisation - for example, open a file
286  into which trace is to be written. */
287  #define traceSTART()
288 #endif
289 
290 #ifndef traceEND
291  /* Use to close a trace, for example close a file into which trace has been
292  written. */
293  #define traceEND()
294 #endif
295 
296 #ifndef traceTASK_SWITCHED_IN
297  /* Called after a task has been selected to run. pxCurrentTCB holds a pointer
298  to the task control block of the selected task. */
299  #define traceTASK_SWITCHED_IN()
300 #endif
301 
302 #ifndef traceINCREASE_TICK_COUNT
303  /* Called before stepping the tick count after waking from tickless idle
304  sleep. */
305  #define traceINCREASE_TICK_COUNT( x )
306 #endif
307 
308 #ifndef traceLOW_POWER_IDLE_BEGIN
309  /* Called immediately before entering tickless idle. */
310  #define traceLOW_POWER_IDLE_BEGIN()
311 #endif
312 
313 #ifndef traceLOW_POWER_IDLE_END
314  /* Called when returning to the Idle task after a tickless idle. */
315  #define traceLOW_POWER_IDLE_END()
316 #endif
317 
318 #ifndef traceTASK_SWITCHED_OUT
319  /* Called before a task has been selected to run. pxCurrentTCB holds a pointer
320  to the task control block of the task being switched out. */
321  #define traceTASK_SWITCHED_OUT()
322 #endif
323 
324 #ifndef traceTASK_PRIORITY_INHERIT
325  /* Called when a task attempts to take a mutex that is already held by a
326  lower priority task. pxTCBOfMutexHolder is a pointer to the TCB of the task
327  that holds the mutex. uxInheritedPriority is the priority the mutex holder
328  will inherit (the priority of the task that is attempting to obtain the
329  muted. */
330  #define traceTASK_PRIORITY_INHERIT( pxTCBOfMutexHolder, uxInheritedPriority )
331 #endif
332 
333 #ifndef traceTASK_PRIORITY_DISINHERIT
334  /* Called when a task releases a mutex, the holding of which had resulted in
335  the task inheriting the priority of a higher priority task.
336  pxTCBOfMutexHolder is a pointer to the TCB of the task that is releasing the
337  mutex. uxOriginalPriority is the task's configured (base) priority. */
338  #define traceTASK_PRIORITY_DISINHERIT( pxTCBOfMutexHolder, uxOriginalPriority )
339 #endif
340 
341 #ifndef traceBLOCKING_ON_QUEUE_RECEIVE
342  /* Task is about to block because it cannot read from a
343  queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore
344  upon which the read was attempted. pxCurrentTCB points to the TCB of the
345  task that attempted the read. */
346  #define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue )
347 #endif
348 
349 #ifndef traceBLOCKING_ON_QUEUE_SEND
350  /* Task is about to block because it cannot write to a
351  queue/mutex/semaphore. pxQueue is a pointer to the queue/mutex/semaphore
352  upon which the write was attempted. pxCurrentTCB points to the TCB of the
353  task that attempted the write. */
354  #define traceBLOCKING_ON_QUEUE_SEND( pxQueue )
355 #endif
356 
357 #ifndef configCHECK_FOR_STACK_OVERFLOW
358  #define configCHECK_FOR_STACK_OVERFLOW 0
359 #endif
360 
361 /* The following event macros are embedded in the kernel API calls. */
362 
363 #ifndef traceMOVED_TASK_TO_READY_STATE
364  #define traceMOVED_TASK_TO_READY_STATE( pxTCB )
365 #endif
366 
367 #ifndef traceQUEUE_CREATE
368  #define traceQUEUE_CREATE( pxNewQueue )
369 #endif
370 
371 #ifndef traceQUEUE_CREATE_FAILED
372  #define traceQUEUE_CREATE_FAILED( ucQueueType )
373 #endif
374 
375 #ifndef traceCREATE_MUTEX
376  #define traceCREATE_MUTEX( pxNewQueue )
377 #endif
378 
379 #ifndef traceCREATE_MUTEX_FAILED
380  #define traceCREATE_MUTEX_FAILED()
381 #endif
382 
383 #ifndef traceGIVE_MUTEX_RECURSIVE
384  #define traceGIVE_MUTEX_RECURSIVE( pxMutex )
385 #endif
386 
387 #ifndef traceGIVE_MUTEX_RECURSIVE_FAILED
388  #define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex )
389 #endif
390 
391 #ifndef traceTAKE_MUTEX_RECURSIVE
392  #define traceTAKE_MUTEX_RECURSIVE( pxMutex )
393 #endif
394 
395 #ifndef traceTAKE_MUTEX_RECURSIVE_FAILED
396  #define traceTAKE_MUTEX_RECURSIVE_FAILED( pxMutex )
397 #endif
398 
399 #ifndef traceCREATE_COUNTING_SEMAPHORE
400  #define traceCREATE_COUNTING_SEMAPHORE()
401 #endif
402 
403 #ifndef traceCREATE_COUNTING_SEMAPHORE_FAILED
404  #define traceCREATE_COUNTING_SEMAPHORE_FAILED()
405 #endif
406 
407 #ifndef traceQUEUE_SEND
408  #define traceQUEUE_SEND( pxQueue )
409 #endif
410 
411 #ifndef traceQUEUE_SEND_FAILED
412  #define traceQUEUE_SEND_FAILED( pxQueue )
413 #endif
414 
415 #ifndef traceQUEUE_RECEIVE
416  #define traceQUEUE_RECEIVE( pxQueue )
417 #endif
418 
419 #ifndef traceQUEUE_PEEK
420  #define traceQUEUE_PEEK( pxQueue )
421 #endif
422 
423 #ifndef traceQUEUE_PEEK_FROM_ISR
424  #define traceQUEUE_PEEK_FROM_ISR( pxQueue )
425 #endif
426 
427 #ifndef traceQUEUE_RECEIVE_FAILED
428  #define traceQUEUE_RECEIVE_FAILED( pxQueue )
429 #endif
430 
431 #ifndef traceQUEUE_SEND_FROM_ISR
432  #define traceQUEUE_SEND_FROM_ISR( pxQueue )
433 #endif
434 
435 #ifndef traceQUEUE_SEND_FROM_ISR_FAILED
436  #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue )
437 #endif
438 
439 #ifndef traceQUEUE_RECEIVE_FROM_ISR
440  #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue )
441 #endif
442 
443 #ifndef traceQUEUE_RECEIVE_FROM_ISR_FAILED
444  #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue )
445 #endif
446 
447 #ifndef traceQUEUE_PEEK_FROM_ISR_FAILED
448  #define traceQUEUE_PEEK_FROM_ISR_FAILED( pxQueue )
449 #endif
450 
451 #ifndef traceQUEUE_DELETE
452  #define traceQUEUE_DELETE( pxQueue )
453 #endif
454 
455 #ifndef traceTASK_CREATE
456  #define traceTASK_CREATE( pxNewTCB )
457 #endif
458 
459 #ifndef traceTASK_CREATE_FAILED
460  #define traceTASK_CREATE_FAILED()
461 #endif
462 
463 #ifndef traceTASK_DELETE
464  #define traceTASK_DELETE( pxTaskToDelete )
465 #endif
466 
467 #ifndef traceTASK_DELAY_UNTIL
468  #define traceTASK_DELAY_UNTIL()
469 #endif
470 
471 #ifndef traceTASK_DELAY
472  #define traceTASK_DELAY()
473 #endif
474 
475 #ifndef traceTASK_PRIORITY_SET
476  #define traceTASK_PRIORITY_SET( pxTask, uxNewPriority )
477 #endif
478 
479 #ifndef traceTASK_SUSPEND
480  #define traceTASK_SUSPEND( pxTaskToSuspend )
481 #endif
482 
483 #ifndef traceTASK_RESUME
484  #define traceTASK_RESUME( pxTaskToResume )
485 #endif
486 
487 #ifndef traceTASK_RESUME_FROM_ISR
488  #define traceTASK_RESUME_FROM_ISR( pxTaskToResume )
489 #endif
490 
491 #ifndef traceTASK_INCREMENT_TICK
492  #define traceTASK_INCREMENT_TICK( xTickCount )
493 #endif
494 
495 #ifndef traceTIMER_CREATE
496  #define traceTIMER_CREATE( pxNewTimer )
497 #endif
498 
499 #ifndef traceTIMER_CREATE_FAILED
500  #define traceTIMER_CREATE_FAILED()
501 #endif
502 
503 #ifndef traceTIMER_COMMAND_SEND
504  #define traceTIMER_COMMAND_SEND( xTimer, xMessageID, xMessageValueValue, xReturn )
505 #endif
506 
507 #ifndef traceTIMER_EXPIRED
508  #define traceTIMER_EXPIRED( pxTimer )
509 #endif
510 
511 #ifndef traceTIMER_COMMAND_RECEIVED
512  #define traceTIMER_COMMAND_RECEIVED( pxTimer, xMessageID, xMessageValue )
513 #endif
514 
515 #ifndef traceMALLOC
516  #define traceMALLOC( pvAddress, uiSize )
517 #endif
518 
519 #ifndef traceFREE
520  #define traceFREE( pvAddress, uiSize )
521 #endif
522 
523 #ifndef configGENERATE_RUN_TIME_STATS
524  #define configGENERATE_RUN_TIME_STATS 0
525 #endif
526 
527 #if ( configGENERATE_RUN_TIME_STATS == 1 )
528 
529  #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS
530  #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.
531  #endif /* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS */
532 
533  #ifndef portGET_RUN_TIME_COUNTER_VALUE
534  #ifndef portALT_GET_RUN_TIME_COUNTER_VALUE
535  #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.
536  #endif /* portALT_GET_RUN_TIME_COUNTER_VALUE */
537  #endif /* portGET_RUN_TIME_COUNTER_VALUE */
538 
539 #endif /* configGENERATE_RUN_TIME_STATS */
540 
541 #ifndef portCONFIGURE_TIMER_FOR_RUN_TIME_STATS
542  #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
543 #endif
544 
545 #ifndef configUSE_MALLOC_FAILED_HOOK
546  #define configUSE_MALLOC_FAILED_HOOK 0
547 #endif
548 
549 #ifndef portPRIVILEGE_BIT
550  #define portPRIVILEGE_BIT ( ( unsigned portBASE_TYPE ) 0x00 )
551 #endif
552 
553 #ifndef portYIELD_WITHIN_API
554  #define portYIELD_WITHIN_API portYIELD
555 #endif
556 
557 #ifndef pvPortMallocAligned
558  #define pvPortMallocAligned( x, puxStackBuffer ) ( ( ( puxStackBuffer ) == NULL ) ? ( pvPortMalloc( ( x ) ) ) : ( puxStackBuffer ) )
559 #endif
560 
561 #ifndef vPortFreeAligned
562  #define vPortFreeAligned( pvBlockToFree ) vPortFree( pvBlockToFree )
563 #endif
564 
565 #ifndef portSUPPRESS_TICKS_AND_SLEEP
566  #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime )
567 #endif
568 
569 #ifndef configEXPECTED_IDLE_TIME_BEFORE_SLEEP
570  #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 2
571 #endif
572 
573 #if configEXPECTED_IDLE_TIME_BEFORE_SLEEP < 2
574  #error configEXPECTED_IDLE_TIME_BEFORE_SLEEP must not be less than 2
575 #endif
576 
577 #ifndef configUSE_TICKLESS_IDLE
578  #define configUSE_TICKLESS_IDLE 0
579 #endif
580 
581 #ifndef configPRE_SLEEP_PROCESSING
582  #define configPRE_SLEEP_PROCESSING( x )
583 #endif
584 
585 #ifndef configPOST_SLEEP_PROCESSING
586  #define configPOST_SLEEP_PROCESSING( x )
587 #endif
588 
589 #ifndef configUSE_QUEUE_SETS
590  #define configUSE_QUEUE_SETS 0
591 #endif
592 
593 #ifndef portTASK_USES_FLOATING_POINT
594  #define portTASK_USES_FLOATING_POINT()
595 #endif
596 
597 #ifndef configUSE_TIME_SLICING
598  #define configUSE_TIME_SLICING 1
599 #endif
600 
601 #ifndef configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS
602  #define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0
603 #endif
604 
605 #ifndef configUSE_NEWLIB_REENTRANT
606  #define configUSE_NEWLIB_REENTRANT 0
607 #endif
608 
609 #ifndef configUSE_STATS_FORMATTING_FUNCTIONS
610  #define configUSE_STATS_FORMATTING_FUNCTIONS 0
611 #endif
612 
613 #ifndef portASSERT_IF_INTERRUPT_PRIORITY_INVALID
614  #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID()
615 #endif
616 
617 /* For backward compatability. */
618 #define eTaskStateGet eTaskGetState
619 
620 #endif /* INC_FREERTOS_H */
621