Imported upstream version 1.20
[fw/openalt] / FreeRTOS / portable / MemMang / heap_3.c
1 /*
2         FreeRTOS.org V4.3.1 - Copyright (C) 2003-2007 Richard Barry.
3
4         This file is part of the FreeRTOS.org distribution.
5
6         FreeRTOS.org is free software; you can redistribute it and/or modify
7         it under the terms of the GNU General Public License as published by
8         the Free Software Foundation; either version 2 of the License, or
9         (at your option) any later version.
10
11         FreeRTOS.org is distributed in the hope that it will be useful,
12         but WITHOUT ANY WARRANTY; without even the implied warranty of
13         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14         GNU General Public License for more details.
15
16         You should have received a copy of the GNU General Public License
17         along with FreeRTOS.org; if not, write to the Free Software
18         Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20         A special exception to the GPL can be applied should you wish to distribute
21         a combined work that includes FreeRTOS.org, without being obliged to provide
22         the source code for any proprietary components.  See the licensing section 
23         of http://www.FreeRTOS.org for full details of how and when the exception
24         can be applied.
25
26         ***************************************************************************
27         See http://www.FreeRTOS.org for documentation, latest information, license 
28         and contact details.  Please ensure to read the configuration and relevant 
29         port sections of the online documentation.
30
31         Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
32         with commercial development and support options.
33         ***************************************************************************
34 */
35
36
37 /*
38  * Implementation of pvPortMalloc() and vPortFree() that relies on the
39  * compilers own malloc() and free() implementations.
40  *
41  * This file can only be used if the linker is configured to to generate
42  * a heap memory area.
43  *
44  * See heap_2.c and heap_1.c for alternative implementations, and the memory
45  * management pages of http://www.FreeRTOS.org for more information.
46  */
47
48 #include <stdlib.h>
49
50 #include "FreeRTOS.h"
51 #include "task.h"
52
53 /*-----------------------------------------------------------*/
54
55 void *pvPortMalloc( size_t xWantedSize )
56 {
57 void *pvReturn;
58
59         vTaskSuspendAll();
60         {
61                 pvReturn = malloc( xWantedSize );
62         }
63         xTaskResumeAll();
64
65         return pvReturn;
66 }
67 /*-----------------------------------------------------------*/
68
69 void vPortFree( void *pv )
70 {
71         if( pv )
72         {
73                 vTaskSuspendAll();
74                 {
75                         free( pv );
76                 }
77                 xTaskResumeAll();
78         }
79 }
80
81
82