]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/EfiLibAllocate.c
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / Dxe / EfiDriverLib / EfiLibAllocate.c
1 /*++
2
3 Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 EfiLibAllocate.c
15
16 Abstract:
17
18 Support routines for memory allocation routines for use with drivers.
19
20 --*/
21
22 #include "Tiano.h"
23 #include "EfiDriverLib.h"
24
25 VOID *
26 EfiLibAllocatePool (
27 IN UINTN AllocationSize
28 )
29 /*++
30
31 Routine Description:
32
33 Allocate BootServicesData pool.
34
35 Arguments:
36
37 AllocationSize - The size to allocate
38
39 Returns:
40
41 Pointer of the buffer allocated.
42
43 --*/
44 {
45 VOID *Memory;
46
47 Memory = NULL;
48 gBS->AllocatePool (EfiBootServicesData, AllocationSize, &Memory);
49 return Memory;
50 }
51
52 VOID *
53 EfiLibAllocateRuntimePool (
54 IN UINTN AllocationSize
55 )
56 /*++
57
58 Routine Description:
59
60 Allocate RuntimeServicesData pool.
61
62 Arguments:
63
64 AllocationSize - The size to allocate
65
66 Returns:
67
68 Pointer of the buffer allocated.
69
70 --*/
71 {
72 VOID *Memory;
73
74 Memory = NULL;
75 gBS->AllocatePool (EfiRuntimeServicesData, AllocationSize, &Memory);
76 return Memory;
77 }
78
79 VOID *
80 EfiLibAllocateZeroPool (
81 IN UINTN AllocationSize
82 )
83 /*++
84
85 Routine Description:
86
87 Allocate BootServicesData pool and zero it.
88
89 Arguments:
90
91 AllocationSize - The size to allocate
92
93 Returns:
94
95 Pointer of the buffer allocated.
96
97 --*/
98 {
99 VOID *Memory;
100
101 Memory = EfiLibAllocatePool (AllocationSize);
102 if (Memory != NULL) {
103 gBS->SetMem (Memory, AllocationSize, 0);
104 }
105
106 return Memory;
107 }
108
109 VOID *
110 EfiLibAllocateRuntimeZeroPool (
111 IN UINTN AllocationSize
112 )
113 /*++
114
115 Routine Description:
116
117 Allocate RuntimeServicesData pool and zero it.
118
119 Arguments:
120
121 AllocationSize - The size to allocate
122
123 Returns:
124
125 Pointer of the buffer allocated.
126
127 --*/
128 {
129 VOID *Memory;
130
131 Memory = EfiLibAllocateRuntimePool (AllocationSize);
132 if (Memory != NULL) {
133 gBS->SetMem (Memory, AllocationSize, 0);
134 }
135
136 return Memory;
137 }
138
139 VOID *
140 EfiLibAllocateCopyPool (
141 IN UINTN AllocationSize,
142 IN VOID *Buffer
143 )
144 /*++
145
146 Routine Description:
147
148 Allocate BootServicesData pool and use a buffer provided by
149 caller to fill it.
150
151 Arguments:
152
153 AllocationSize - The size to allocate
154
155 Buffer - Buffer that will be filled into the buffer allocated
156
157 Returns:
158
159 Pointer of the buffer allocated.
160
161 --*/
162 {
163 VOID *Memory;
164
165 Memory = NULL;
166 gBS->AllocatePool (EfiBootServicesData, AllocationSize, &Memory);
167 if (Memory != NULL) {
168 gBS->CopyMem (Memory, Buffer, AllocationSize);
169 }
170
171 return Memory;
172 }
173
174 VOID *
175 EfiLibAllocateRuntimeCopyPool (
176 IN UINTN AllocationSize,
177 IN VOID *Buffer
178 )
179 /*++
180
181 Routine Description:
182
183 Allocate RuntimeServicesData pool and use a buffer provided by
184 caller to fill it.
185
186 Arguments:
187
188 AllocationSize - The size to allocate
189
190 Buffer - Buffer that will be filled into the buffer allocated
191
192 Returns:
193
194 Pointer of the buffer allocated.
195
196 --*/
197 {
198 VOID *Memory;
199
200 Memory = NULL;
201 gBS->AllocatePool (EfiRuntimeServicesData, AllocationSize, &Memory);
202 if (Memory != NULL) {
203 gBS->CopyMem (Memory, Buffer, AllocationSize);
204 }
205
206 return Memory;
207 }
208
209
210 VOID
211 EfiLibSafeFreePool (
212 IN VOID *Buffer
213 )
214 /*++
215
216 Routine Description:
217
218 Free pool safely (without setting back Buffer to NULL).
219
220 Arguments:
221
222 Buffer - The allocated pool entry to free
223
224 Returns:
225
226 Pointer of the buffer allocated.
227
228 --*/
229 {
230 if (Buffer != NULL) {
231 gBS->FreePool (Buffer);
232 }
233 }