]> git.sur5r.net Git - freertos/blob - Source/include/FreeRTOS.h
Update to V5.0.0.
[freertos] / Source / include / FreeRTOS.h
1 /*\r
2         FreeRTOS.org V5.0.0 - Copyright (C) 2003-2008 Richard Barry.\r
3 \r
4         This file is part of the FreeRTOS.org distribution.\r
5 \r
6         FreeRTOS.org is free software; you can redistribute it and/or modify\r
7         it under the terms of the GNU General Public License as published by\r
8         the Free Software Foundation; either version 2 of the License, or\r
9         (at your option) any later version.\r
10 \r
11         FreeRTOS.org is distributed in the hope that it will be useful,\r
12         but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14         GNU General Public License for more details.\r
15 \r
16         You should have received a copy of the GNU General Public License\r
17         along with FreeRTOS.org; if not, write to the Free Software\r
18         Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
19 \r
20         A special exception to the GPL can be applied should you wish to distribute\r
21         a combined work that includes FreeRTOS.org, without being obliged to provide\r
22         the source code for any proprietary components.  See the licensing section\r
23         of http://www.FreeRTOS.org for full details of how and when the exception\r
24         can be applied.\r
25 \r
26     ***************************************************************************\r
27     ***************************************************************************\r
28     *                                                                         *\r
29     * SAVE TIME AND MONEY!  We can port FreeRTOS.org to your own hardware,    *\r
30     * and even write all or part of your application on your behalf.          *\r
31     * See http://www.OpenRTOS.com for details of the services we provide to   *\r
32     * expedite your project.                                                  *\r
33     *                                                                         *\r
34     ***************************************************************************\r
35     ***************************************************************************\r
36 \r
37         Please ensure to read the configuration and relevant port sections of the\r
38         online documentation.\r
39 \r
40         http://www.FreeRTOS.org - Documentation, latest information, license and \r
41         contact details.\r
42 \r
43         http://www.SafeRTOS.com - A version that is certified for use in safety \r
44         critical systems.\r
45 \r
46         http://www.OpenRTOS.com - Commercial support, development, porting, \r
47         licensing and training services.\r
48 */\r
49 \r
50 #ifndef INC_FREERTOS_H\r
51 #define INC_FREERTOS_H\r
52 \r
53 \r
54 /*\r
55  * Include the generic headers required for the FreeRTOS port being used.\r
56  */\r
57 #include <stddef.h>\r
58 \r
59 /* Basic FreeRTOS definitions. */\r
60 #include "projdefs.h"\r
61 \r
62 /* Application specific configuration options. */\r
63 #include "FreeRTOSConfig.h"\r
64 \r
65 /* Definitions specific to the port being used. */\r
66 #include "portable.h"\r
67 \r
68 \r
69 /* Defines the prototype to which the application task hook function must\r
70 conform. */\r
71 typedef portBASE_TYPE (*pdTASK_HOOK_CODE)( void * );\r
72 \r
73 \r
74 \r
75 \r
76 \r
77 /*\r
78  * Check all the required application specific macros have been defined.\r
79  * These macros are application specific and (as downloaded) are defined\r
80  * within FreeRTOSConfig.h.\r
81  */\r
82 \r
83 #ifndef configUSE_PREEMPTION\r
84         #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.\r
85 #endif\r
86 \r
87 #ifndef configUSE_IDLE_HOOK\r
88         #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.\r
89 #endif\r
90 \r
91 #ifndef configUSE_TICK_HOOK\r
92         #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.\r
93 #endif\r
94 \r
95 #ifndef configUSE_CO_ROUTINES\r
96         #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.\r
97 #endif\r
98 \r
99 #ifndef INCLUDE_vTaskPrioritySet\r
100         #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.\r
101 #endif\r
102 \r
103 #ifndef INCLUDE_uxTaskPriorityGet\r
104         #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.\r
105 #endif\r
106 \r
107 #ifndef INCLUDE_vTaskDelete             \r
108         #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.\r
109 #endif\r
110 \r
111 #ifndef INCLUDE_vTaskCleanUpResources\r
112         #error Missing definition:  INCLUDE_vTaskCleanUpResources should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
113 #endif\r
114 \r
115 #ifndef INCLUDE_vTaskSuspend    \r
116         #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.\r
117 #endif\r
118 \r
119 #ifndef INCLUDE_vTaskDelayUntil\r
120         #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.\r
121 #endif\r
122 \r
123 #ifndef INCLUDE_vTaskDelay\r
124         #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.\r
125 #endif\r
126 \r
127 #ifndef configUSE_16_BIT_TICKS\r
128         #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.\r
129 #endif\r
130 \r
131 #ifndef configUSE_APPLICATION_TASK_TAG\r
132         #define configUSE_APPLICATION_TASK_TAG 0\r
133 #endif\r
134 \r
135 #ifndef INCLUDE_uxTaskGetStackHighWaterMark\r
136         #define INCLUDE_uxTaskGetStackHighWaterMark 0\r
137 #endif\r
138 \r
139 #ifndef configUSE_RECURSIVE_MUTEXES\r
140         #define configUSE_RECURSIVE_MUTEXES 0\r
141 #endif\r
142 \r
143 #ifndef configUSE_MUTEXES\r
144         #define configUSE_MUTEXES 0\r
145 #endif\r
146 \r
147 #ifndef configUSE_COUNTING_SEMAPHORES\r
148         #define configUSE_COUNTING_SEMAPHORES 0\r
149 #endif\r
150 \r
151 #ifndef configUSE_ALTERNATIVE_API\r
152         #define configUSE_ALTERNATIVE_API 0\r
153 #endif\r
154 \r
155 #ifndef portCRITICAL_NESTING_IN_TCB\r
156         #define portCRITICAL_NESTING_IN_TCB 0\r
157 #endif\r
158 \r
159 #ifndef configMAX_TASK_NAME_LEN\r
160         #define configMAX_TASK_NAME_LEN 16\r
161 #endif\r
162 \r
163 #ifndef configIDLE_SHOULD_YIELD\r
164         #define configIDLE_SHOULD_YIELD         1\r
165 #endif\r
166 \r
167 #if configMAX_TASK_NAME_LEN < 1\r
168         #undef configMAX_TASK_NAME_LEN\r
169         #define configMAX_TASK_NAME_LEN 1\r
170 #endif\r
171 \r
172 #ifndef INCLUDE_xTaskResumeFromISR\r
173         #define INCLUDE_xTaskResumeFromISR 1\r
174 #endif\r
175 \r
176 #ifndef INCLUDE_xTaskGetSchedulerState\r
177         #define INCLUDE_xTaskGetSchedulerState 0\r
178 #endif\r
179 \r
180 #if ( configUSE_MUTEXES == 1 )\r
181         /* xTaskGetCurrentTaskHandle is used by the priority inheritance mechanism\r
182         within the mutex implementation so must be available if mutexes are used. */\r
183         #undef INCLUDE_xTaskGetCurrentTaskHandle\r
184         #define INCLUDE_xTaskGetCurrentTaskHandle 1\r
185 #else\r
186         #ifndef INCLUDE_xTaskGetCurrentTaskHandle\r
187                 #define INCLUDE_xTaskGetCurrentTaskHandle 0\r
188         #endif\r
189 #endif\r
190 \r
191 \r
192 /* Remove any unused trace macros. */\r
193 #ifndef traceSTART\r
194         /* Used to perform any necessary initialisation - for example, open a file\r
195         into which trace is to be written. */\r
196         #define traceSTART()\r
197 #endif\r
198 \r
199 #ifndef traceEND\r
200         /* Use to close a trace, for example close a file into which trace has been\r
201         written. */\r
202         #define traceEND()\r
203 #endif\r
204 \r
205 #ifndef traceTASK_SWITCHED_IN\r
206         /* Called after a task has been selected to run.  pxCurrentTCB holds a pointer\r
207         to the task control block of the selected task. */\r
208         #define traceTASK_SWITCHED_IN()\r
209 #endif\r
210 \r
211 #ifndef traceTASK_SWITCHED_OUT\r
212         /* Called before a task has been selected to run.  pxCurrentTCB holds a pointer\r
213         to the task control block of the task being switched out. */\r
214         #define traceTASK_SWITCHED_OUT()\r
215 #endif\r
216 \r
217 #ifndef traceBLOCKING_ON_QUEUE_RECEIVE\r
218         /* Task is about to block because it cannot read from a \r
219         queue/mutex/semaphore.  pxQueue is a pointer to the queue/mutex/semaphore\r
220         upon which the read was attempted.  pxCurrentTCB points to the TCB of the \r
221         task that attempted the read. */\r
222         #define traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue )\r
223 #endif\r
224 \r
225 #ifndef traceBLOCKING_ON_QUEUE_SEND\r
226         /* Task is about to block because it cannot write to a \r
227         queue/mutex/semaphore.  pxQueue is a pointer to the queue/mutex/semaphore\r
228         upon which the write was attempted.  pxCurrentTCB points to the TCB of the \r
229         task that attempted the write. */\r
230         #define traceBLOCKING_ON_QUEUE_SEND( pxQueue )\r
231 #endif\r
232 \r
233 #ifndef configCHECK_FOR_STACK_OVERFLOW\r
234         #define configCHECK_FOR_STACK_OVERFLOW 0\r
235 #endif\r
236 \r
237 /* The following event macros are embedded in the kernel API calls. */\r
238 \r
239 #ifndef traceQUEUE_CREATE       \r
240         #define traceQUEUE_CREATE( pxNewQueue )\r
241 #endif\r
242 \r
243 #ifndef traceQUEUE_CREATE_FAILED\r
244         #define traceQUEUE_CREATE_FAILED()\r
245 #endif\r
246 \r
247 #ifndef traceCREATE_MUTEX\r
248         #define traceCREATE_MUTEX( pxNewQueue )\r
249 #endif\r
250 \r
251 #ifndef traceCREATE_MUTEX_FAILED\r
252         #define traceCREATE_MUTEX_FAILED()\r
253 #endif\r
254 \r
255 #ifndef traceGIVE_MUTEX_RECURSIVE\r
256         #define traceGIVE_MUTEX_RECURSIVE( pxMutex )\r
257 #endif\r
258 \r
259 #ifndef traceGIVE_MUTEX_RECURSIVE_FAILED\r
260         #define traceGIVE_MUTEX_RECURSIVE_FAILED( pxMutex )\r
261 #endif\r
262 \r
263 #ifndef traceTAKE_MUTEX_RECURSIVE\r
264         #define traceTAKE_MUTEX_RECURSIVE( pxMutex )\r
265 #endif\r
266 \r
267 #ifndef traceCREATE_COUNTING_SEMAPHORE\r
268         #define traceCREATE_COUNTING_SEMAPHORE()\r
269 #endif\r
270 \r
271 #ifndef traceCREATE_COUNTING_SEMAPHORE_FAILED\r
272         #define traceCREATE_COUNTING_SEMAPHORE_FAILED()\r
273 #endif\r
274 \r
275 #ifndef traceQUEUE_SEND\r
276         #define traceQUEUE_SEND( pxQueue )\r
277 #endif\r
278 \r
279 #ifndef traceQUEUE_SEND_FAILED\r
280         #define traceQUEUE_SEND_FAILED( pxQueue )\r
281 #endif\r
282 \r
283 #ifndef traceQUEUE_RECEIVE\r
284         #define traceQUEUE_RECEIVE( pxQueue )\r
285 #endif\r
286 \r
287 #ifndef traceQUEUE_PEEK\r
288         #define traceQUEUE_PEEK( pxQueue )\r
289 #endif\r
290 \r
291 #ifndef traceQUEUE_RECEIVE_FAILED\r
292         #define traceQUEUE_RECEIVE_FAILED( pxQueue )\r
293 #endif\r
294 \r
295 #ifndef traceQUEUE_SEND_FROM_ISR\r
296         #define traceQUEUE_SEND_FROM_ISR( pxQueue )\r
297 #endif\r
298 \r
299 #ifndef traceQUEUE_SEND_FROM_ISR_FAILED\r
300         #define traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue )\r
301 #endif\r
302 \r
303 #ifndef traceQUEUE_RECEIVE_FROM_ISR\r
304         #define traceQUEUE_RECEIVE_FROM_ISR( pxQueue )\r
305 #endif\r
306 \r
307 #ifndef traceQUEUE_RECEIVE_FROM_ISR_FAILED\r
308         #define traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue )\r
309 #endif\r
310 \r
311 #ifndef traceQUEUE_DELETE\r
312         #define traceQUEUE_DELETE( pxQueue )\r
313 #endif\r
314 \r
315 #ifndef traceTASK_CREATE\r
316         #define traceTASK_CREATE( pxNewTCB )\r
317 #endif\r
318 \r
319 #ifndef traceTASK_CREATE_FAILED\r
320         #define traceTASK_CREATE_FAILED( pxNewTCB )\r
321 #endif\r
322 \r
323 #ifndef traceTASK_DELETE\r
324         #define traceTASK_DELETE( pxTaskToDelete )\r
325 #endif\r
326 \r
327 #ifndef traceTASK_DELAY_UNTIL\r
328         #define traceTASK_DELAY_UNTIL()\r
329 #endif\r
330 \r
331 #ifndef traceTASK_DELAY\r
332         #define traceTASK_DELAY()\r
333 #endif\r
334 \r
335 #ifndef traceTASK_PRIORITY_SET\r
336         #define traceTASK_PRIORITY_SET( pxTask, uxNewPriority )\r
337 #endif\r
338 \r
339 #ifndef traceTASK_SUSPEND\r
340         #define traceTASK_SUSPEND( pxTaskToSuspend )\r
341 #endif\r
342 \r
343 #ifndef traceTASK_RESUME\r
344         #define traceTASK_RESUME( pxTaskToResume )\r
345 #endif\r
346 \r
347 #ifndef traceTASK_RESUME_FROM_ISR\r
348         #define traceTASK_RESUME_FROM_ISR( pxTaskToResume )\r
349 #endif\r
350 \r
351 #ifndef traceTASK_INCREMENT_TICK\r
352         #define traceTASK_INCREMENT_TICK( xTickCount )\r
353 #endif\r
354 \r
355 #endif /* INC_FREERTOS_H */\r
356 \r