]> git.proxmox.com Git - mirror_edk2.git/blob - UnixPkg/Sec/SecMain.h
236a50ee43bfb04eb832612647df1404fbdc1185
[mirror_edk2.git] / UnixPkg / Sec / SecMain.h
1 /*++
2
3 Copyright (c) 2006 - 2008, Intel Corporation
4 All rights reserved. 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
13 Module Name:
14 SecMain.h
15
16 Abstract:
17 Include file for host API based SEC
18
19 --*/
20 #include <FrameworkPei.h>
21
22 #include <Protocol/UnixThunk.h>
23 #include <Ppi/StatusCode.h>
24
25 #include <Library/PeCoffLib.h>
26 #include <Library/BaseLib.h>
27 #include <Library/BaseMemoryLib.h>
28 #include <Library/PrintLib.h>
29 #include <Library/PcdLib.h>
30 #include <Library/DebugLib.h>
31
32 #define STACK_SIZE 0x20000
33
34 typedef struct {
35 EFI_PHYSICAL_ADDRESS Address;
36 UINT64 Size;
37 } UNIX_FD_INFO;
38
39 typedef struct {
40 EFI_PHYSICAL_ADDRESS Memory;
41 UINT64 Size;
42 } UNIX_SYSTEM_MEMORY;
43
44
45
46 EFI_STATUS
47 EFIAPI
48 SecWinNtPeiLoadFile (
49 VOID *Pe32Data, // TODO: add IN/OUT modifier to Pe32Data
50 EFI_PHYSICAL_ADDRESS *ImageAddress, // TODO: add IN/OUT modifier to ImageAddress
51 UINT64 *ImageSize, // TODO: add IN/OUT modifier to ImageSize
52 EFI_PHYSICAL_ADDRESS *EntryPoint // TODO: add IN/OUT modifier to EntryPoint
53 )
54 /*++
55
56 Routine Description:
57
58 TODO: Add function description
59
60 Arguments:
61
62 Pe32Data - TODO: add argument description
63 ImageAddress - TODO: add argument description
64 ImageSize - TODO: add argument description
65 EntryPoint - TODO: add argument description
66
67 Returns:
68
69 TODO: add return values
70
71 --*/
72 ;
73
74 EFI_STATUS
75 EFIAPI
76 SecWinNtPeiAutoScan (
77 IN UINTN Index,
78 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,
79 OUT UINT64 *MemorySize
80 )
81 /*++
82
83 Routine Description:
84
85 TODO: Add function description
86
87 Arguments:
88
89 Index - TODO: add argument description
90 MemoryBase - TODO: add argument description
91 MemorySize - TODO: add argument description
92
93 Returns:
94
95 TODO: add return values
96
97 --*/
98 ;
99
100 VOID *
101 EFIAPI
102 SecWinNtWinNtThunkAddress (
103 VOID
104 )
105 /*++
106
107 Routine Description:
108
109 TODO: Add function description
110
111 Arguments:
112
113 InterfaceSize - TODO: add argument description
114 InterfaceBase - TODO: add argument description
115
116 Returns:
117
118 TODO: add return values
119
120 --*/
121 ;
122
123 EFI_STATUS
124 EFIAPI
125 SecWinNtWinNtFwhAddress (
126 IN OUT UINT64 *FwhSize,
127 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase
128 )
129 /*++
130
131 Routine Description:
132
133 TODO: Add function description
134
135 Arguments:
136
137 FwhSize - TODO: add argument description
138 FwhBase - TODO: add argument description
139
140 Returns:
141
142 TODO: add return values
143
144 --*/
145 ;
146
147 EFI_STATUS
148 EFIAPI
149 SecPeiReportStatusCode (
150 IN EFI_PEI_SERVICES **PeiServices,
151 IN EFI_STATUS_CODE_TYPE CodeType,
152 IN EFI_STATUS_CODE_VALUE Value,
153 IN UINT32 Instance,
154 IN EFI_GUID * CallerId,
155 IN EFI_STATUS_CODE_DATA * Data OPTIONAL
156 )
157 /*++
158
159 Routine Description:
160
161 TODO: Add function description
162
163 Arguments:
164
165 PeiServices - TODO: add argument description
166 CodeType - TODO: add argument description
167 Value - TODO: add argument description
168 Instance - TODO: add argument description
169 CallerId - TODO: add argument description
170 Data - TODO: add argument description
171
172 Returns:
173
174 TODO: add return values
175
176 --*/
177 ;
178
179 INTN
180 EFIAPI
181 main (
182 IN INTN Argc,
183 IN CHAR8 **Argv,
184 IN CHAR8 **Envp
185 )
186 /*++
187
188 Routine Description:
189
190 TODO: Add function description
191
192 Arguments:
193
194 Argc - TODO: add argument description
195 Argv - TODO: add argument description
196 Envp - TODO: add argument description
197
198 Returns:
199
200 TODO: add return values
201
202 --*/
203 ;
204
205 VOID
206 SecLoadFromCore (
207 IN UINTN LargestRegion,
208 IN UINTN LargestRegionSize,
209 IN UINTN BootFirmwareVolumeBase,
210 IN VOID *PeiCoreFile
211 )
212 /*++
213
214 Routine Description:
215
216 TODO: Add function description
217
218 Arguments:
219
220 LargestRegion - TODO: add argument description
221 LargestRegionSize - TODO: add argument description
222 BootFirmwareVolumeBase - TODO: add argument description
223 PeiCoreFile - TODO: add argument description
224
225 Returns:
226
227 TODO: add return values
228
229 --*/
230 ;
231
232 EFI_STATUS
233 SecLoadFile (
234 IN VOID *Pe32Data,
235 IN EFI_PHYSICAL_ADDRESS *ImageAddress,
236 IN UINT64 *ImageSize,
237 IN EFI_PHYSICAL_ADDRESS *EntryPoint
238 )
239 /*++
240
241 Routine Description:
242
243 TODO: Add function description
244
245 Arguments:
246
247 Pe32Data - TODO: add argument description
248 ImageAddress - TODO: add argument description
249 ImageSize - TODO: add argument description
250 EntryPoint - TODO: add argument description
251
252 Returns:
253
254 TODO: add return values
255
256 --*/
257 ;
258
259 EFI_STATUS
260 SecFfsFindPeiCore (
261 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
262 OUT VOID **Pe32Data
263 )
264 /*++
265
266 Routine Description:
267
268 TODO: Add function description
269
270 Arguments:
271
272 FwVolHeader - TODO: add argument description
273 Pe32Data - TODO: add argument description
274
275 Returns:
276
277 TODO: add return values
278
279 --*/
280 ;
281
282 EFI_STATUS
283 SecFfsFindNextFile (
284 IN EFI_FV_FILETYPE SearchType,
285 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
286 IN OUT EFI_FFS_FILE_HEADER **FileHeader
287 )
288 /*++
289
290 Routine Description:
291
292 TODO: Add function description
293
294 Arguments:
295
296 SearchType - TODO: add argument description
297 FwVolHeader - TODO: add argument description
298 FileHeader - TODO: add argument description
299
300 Returns:
301
302 TODO: add return values
303
304 --*/
305 ;
306
307 EFI_STATUS
308 SecFfsFindSectionData (
309 IN EFI_SECTION_TYPE SectionType,
310 IN EFI_FFS_FILE_HEADER *FfsFileHeader,
311 IN OUT VOID **SectionData
312 )
313 /*++
314
315 Routine Description:
316
317 TODO: Add function description
318
319 Arguments:
320
321 SectionType - TODO: add argument description
322 FfsFileHeader - TODO: add argument description
323 SectionData - TODO: add argument description
324
325 Returns:
326
327 TODO: add return values
328
329 --*/
330 ;
331
332 EFI_STATUS
333 EFIAPI
334 SecWinNtPeCoffLoaderLoadAsDll (
335 IN CHAR8 *PdbFileName,
336 IN VOID **ImageEntryPoint,
337 OUT VOID **ModHandle
338 )
339 /*++
340
341 Routine Description:
342
343 TODO: Add function description
344
345 Arguments:
346
347 PdbFileName - TODO: add argument description
348 ImageEntryPoint - TODO: add argument description
349 ModHandle - TODO: add argument description
350
351 Returns:
352
353 TODO: add return values
354
355 --*/
356 ;
357
358 EFI_STATUS
359 EFIAPI
360 SecWinNtPeCoffLoaderFreeLibrary (
361 OUT VOID *ModHandle
362 )
363 /*++
364
365 Routine Description:
366
367 TODO: Add function description
368
369 Arguments:
370
371 ModHandle - TODO: add argument description
372
373 Returns:
374
375 TODO: add return values
376
377 --*/
378 ;
379
380 EFI_STATUS
381 EFIAPI
382 SecWinNtFdAddress (
383 IN UINTN Index,
384 IN OUT EFI_PHYSICAL_ADDRESS *FdBase,
385 IN OUT UINT64 *FdSize
386 )
387 /*++
388
389 Routine Description:
390
391 TODO: Add function description
392
393 Arguments:
394
395 Index - TODO: add argument description
396 FdBase - TODO: add argument description
397 FdSize - TODO: add argument description
398
399 Returns:
400
401 TODO: add return values
402
403 --*/
404 ;
405
406 EFI_STATUS
407 GetImageReadFunction (
408 IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,
409 IN EFI_PHYSICAL_ADDRESS *TopOfMemory
410 )
411 /*++
412
413 Routine Description:
414
415 TODO: Add function description
416
417 Arguments:
418
419 ImageContext - TODO: add argument description
420 TopOfMemory - TODO: add argument description
421
422 Returns:
423
424 TODO: add return values
425
426 --*/
427 ;
428
429 EFI_STATUS
430 EFIAPI
431 SecImageRead (
432 IN VOID *FileHandle,
433 IN UINTN FileOffset,
434 IN OUT UINTN *ReadSize,
435 OUT VOID *Buffer
436 )
437 /*++
438
439 Routine Description:
440
441 TODO: Add function description
442
443 Arguments:
444
445 FileHandle - TODO: add argument description
446 FileOffset - TODO: add argument description
447 ReadSize - TODO: add argument description
448 Buffer - TODO: add argument description
449
450 Returns:
451
452 TODO: add return values
453
454 --*/
455 ;
456
457 CHAR16 *
458 AsciiToUnicode (
459 IN CHAR8 *Ascii,
460 IN UINTN *StrLen OPTIONAL
461 )
462 /*++
463
464 Routine Description:
465
466 TODO: Add function description
467
468 Arguments:
469
470 Ascii - TODO: add argument description
471 StrLen - TODO: add argument description
472
473 Returns:
474
475 TODO: add return values
476
477 --*/
478 ;
479
480 UINTN
481 CountSeperatorsInString (
482 IN const CHAR16 *String,
483 IN CHAR16 Seperator
484 )
485 /*++
486
487 Routine Description:
488
489 TODO: Add function description
490
491 Arguments:
492
493 String - TODO: add argument description
494 Seperator - TODO: add argument description
495
496 Returns:
497
498 TODO: add return values
499
500 --*/
501 ;
502
503 EFI_STATUS
504 EFIAPI
505 SecTemporaryRamSupport (
506 IN CONST EFI_PEI_SERVICES **PeiServices,
507 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,
508 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,
509 IN UINTN CopySize
510 );
511
512 extern EFI_UNIX_THUNK_PROTOCOL *gUnix;