]> git.proxmox.com Git - mirror_edk2.git/blob - UnixPkg/Sec/SecMain.h
Adding Simple Pointer, GOP, SimpleTextInEx, and Networking protocols to the emulator...
[mirror_edk2.git] / UnixPkg / Sec / SecMain.h
1 /*++
2
3 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
4 Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13
14 Module Name:
15 SecMain.h
16
17 Abstract:
18 Include file for host API based SEC
19
20 --*/
21 #include <PiPei.h>
22
23 #include <Protocol/UnixThunk.h>
24 #include <Ppi/StatusCode.h>
25
26 #include <Library/PeCoffLib.h>
27 #include <Library/BaseLib.h>
28 #include <Library/BaseMemoryLib.h>
29 #include <Library/PrintLib.h>
30 #include <Library/PcdLib.h>
31 #include <Library/DebugLib.h>
32 #include <Library/ReportStatusCodeLib.h>
33 #include <Library/SecDispatchTableLib.h>
34
35
36 #define STACK_SIZE 0x20000
37
38 typedef struct {
39 EFI_PHYSICAL_ADDRESS Address;
40 UINT64 Size;
41 } UNIX_FD_INFO;
42
43 typedef struct {
44 EFI_PHYSICAL_ADDRESS Memory;
45 UINT64 Size;
46 } UNIX_SYSTEM_MEMORY;
47
48
49 #define MAX_IMAGE_CONTEXT_TO_MOD_HANDLE_ARRAY_SIZE 0x100
50
51 typedef struct {
52 PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext;
53 VOID *ModHandle;
54 } IMAGE_CONTEXT_TO_MOD_HANDLE;
55
56
57 EFI_STATUS
58 EFIAPI
59 SecUnixPeiLoadFile (
60 VOID *Pe32Data, // TODO: add IN/OUT modifier to Pe32Data
61 EFI_PHYSICAL_ADDRESS *ImageAddress, // TODO: add IN/OUT modifier to ImageAddress
62 UINT64 *ImageSize, // TODO: add IN/OUT modifier to ImageSize
63 EFI_PHYSICAL_ADDRESS *EntryPoint // TODO: add IN/OUT modifier to EntryPoint
64 );
65
66 EFI_STATUS
67 EFIAPI
68 GasketSecUnixPeiLoadFile (
69 VOID *Pe32Data, // TODO: add IN/OUT modifier to Pe32Data
70 EFI_PHYSICAL_ADDRESS *ImageAddress, // TODO: add IN/OUT modifier to ImageAddress
71 UINT64 *ImageSize, // TODO: add IN/OUT modifier to ImageSize
72 EFI_PHYSICAL_ADDRESS *EntryPoint // TODO: add IN/OUT modifier to EntryPoint
73 )
74 /*++
75
76 Routine Description:
77
78 TODO: Add function description
79
80 Arguments:
81
82 Pe32Data - TODO: add argument description
83 ImageAddress - TODO: add argument description
84 ImageSize - TODO: add argument description
85 EntryPoint - TODO: add argument description
86
87 Returns:
88
89 TODO: add return values
90
91 --*/
92 ;
93
94 EFI_STATUS
95 EFIAPI
96 SecUnixPeiAutoScan (
97 IN UINTN Index,
98 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,
99 OUT UINT64 *MemorySize
100 );
101
102 EFI_STATUS
103 EFIAPI
104 GasketSecUnixPeiAutoScan (
105 IN UINTN Index,
106 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,
107 OUT UINT64 *MemorySize
108 )
109 /*++
110
111 Routine Description:
112
113 TODO: Add function description
114
115 Arguments:
116
117 Index - TODO: add argument description
118 MemoryBase - TODO: add argument description
119 MemorySize - TODO: add argument description
120
121 Returns:
122
123 TODO: add return values
124
125 --*/
126 ;
127
128 VOID *
129 EFIAPI
130 SecUnixUnixThunkAddress (
131 VOID
132 );
133
134 VOID *
135 EFIAPI
136 GasketSecUnixUnixThunkAddress (
137 VOID
138 )
139 /*++
140
141 Routine Description:
142
143 TODO: Add function description
144
145 Arguments:
146
147 InterfaceSize - TODO: add argument description
148 InterfaceBase - TODO: add argument description
149
150 Returns:
151
152 TODO: add return values
153
154 --*/
155 ;
156
157 EFI_STATUS
158 EFIAPI
159 SecUnixUnixFwhAddress (
160 IN OUT UINT64 *FwhSize,
161 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase
162 );
163
164 EFI_STATUS
165 EFIAPI
166 GasketSecUnixUnixFwhAddress (
167 IN OUT UINT64 *FwhSize,
168 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase
169 )
170 /*++
171
172 Routine Description:
173
174 TODO: Add function description
175
176 Arguments:
177
178 FwhSize - TODO: add argument description
179 FwhBase - TODO: add argument description
180
181 Returns:
182
183 TODO: add return values
184
185 --*/
186 ;
187
188 EFI_STATUS
189 EFIAPI
190 SecPeiReportStatusCode (
191 IN CONST EFI_PEI_SERVICES **PeiServices,
192 IN EFI_STATUS_CODE_TYPE CodeType,
193 IN EFI_STATUS_CODE_VALUE Value,
194 IN UINT32 Instance,
195 IN CONST EFI_GUID *CallerId,
196 IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL
197 );
198
199 EFI_STATUS
200 EFIAPI
201 GasketSecPeiReportStatusCode (
202 IN CONST EFI_PEI_SERVICES **PeiServices,
203 IN EFI_STATUS_CODE_TYPE CodeType,
204 IN EFI_STATUS_CODE_VALUE Value,
205 IN UINT32 Instance,
206 IN CONST EFI_GUID *CallerId,
207 IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL
208 )
209 /*++
210
211 Routine Description:
212
213 TODO: Add function description
214
215 Arguments:
216
217 PeiServices - TODO: add argument description
218 CodeType - TODO: add argument description
219 Value - TODO: add argument description
220 Instance - TODO: add argument description
221 CallerId - TODO: add argument description
222 Data - TODO: add argument description
223
224 Returns:
225
226 TODO: add return values
227
228 --*/
229 ;
230
231 int
232 main (
233 IN int Argc,
234 IN char **Argv,
235 IN char **Envp
236 )
237 /*++
238
239 Routine Description:
240
241 TODO: Add function description
242
243 Arguments:
244
245 Argc - TODO: add argument description
246 Argv - TODO: add argument description
247 Envp - TODO: add argument description
248
249 Returns:
250
251 TODO: add return values
252
253 --*/
254 ;
255
256 VOID
257 SecLoadFromCore (
258 IN UINTN LargestRegion,
259 IN UINTN LargestRegionSize,
260 IN UINTN BootFirmwareVolumeBase,
261 IN VOID *PeiCoreFile
262 )
263 /*++
264
265 Routine Description:
266
267 TODO: Add function description
268
269 Arguments:
270
271 LargestRegion - TODO: add argument description
272 LargestRegionSize - TODO: add argument description
273 BootFirmwareVolumeBase - TODO: add argument description
274 PeiCoreFile - TODO: add argument description
275
276 Returns:
277
278 TODO: add return values
279
280 --*/
281 ;
282
283 EFI_STATUS
284 SecLoadFile (
285 IN VOID *Pe32Data,
286 IN EFI_PHYSICAL_ADDRESS *ImageAddress,
287 IN UINT64 *ImageSize,
288 IN EFI_PHYSICAL_ADDRESS *EntryPoint
289 )
290 /*++
291
292 Routine Description:
293
294 TODO: Add function description
295
296 Arguments:
297
298 Pe32Data - TODO: add argument description
299 ImageAddress - TODO: add argument description
300 ImageSize - TODO: add argument description
301 EntryPoint - TODO: add argument description
302
303 Returns:
304
305 TODO: add return values
306
307 --*/
308 ;
309
310 EFI_STATUS
311 SecFfsFindPeiCore (
312 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
313 OUT VOID **Pe32Data
314 )
315 /*++
316
317 Routine Description:
318
319 TODO: Add function description
320
321 Arguments:
322
323 FwVolHeader - TODO: add argument description
324 Pe32Data - TODO: add argument description
325
326 Returns:
327
328 TODO: add return values
329
330 --*/
331 ;
332
333 EFI_STATUS
334 SecFfsFindNextFile (
335 IN EFI_FV_FILETYPE SearchType,
336 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,
337 IN OUT EFI_FFS_FILE_HEADER **FileHeader
338 )
339 /*++
340
341 Routine Description:
342
343 TODO: Add function description
344
345 Arguments:
346
347 SearchType - TODO: add argument description
348 FwVolHeader - TODO: add argument description
349 FileHeader - TODO: add argument description
350
351 Returns:
352
353 TODO: add return values
354
355 --*/
356 ;
357
358 EFI_STATUS
359 SecFfsFindSectionData (
360 IN EFI_SECTION_TYPE SectionType,
361 IN EFI_FFS_FILE_HEADER *FfsFileHeader,
362 IN OUT VOID **SectionData
363 )
364 /*++
365
366 Routine Description:
367
368 TODO: Add function description
369
370 Arguments:
371
372 SectionType - TODO: add argument description
373 FfsFileHeader - TODO: add argument description
374 SectionData - TODO: add argument description
375
376 Returns:
377
378 TODO: add return values
379
380 --*/
381 ;
382
383 EFI_STATUS
384 EFIAPI
385 SecUnixPeCoffLoaderLoadAsDll (
386 IN CHAR8 *PdbFileName,
387 IN VOID **ImageEntryPoint,
388 OUT VOID **ModHandle
389 )
390 /*++
391
392 Routine Description:
393
394 TODO: Add function description
395
396 Arguments:
397
398 PdbFileName - TODO: add argument description
399 ImageEntryPoint - TODO: add argument description
400 ModHandle - TODO: add argument description
401
402 Returns:
403
404 TODO: add return values
405
406 --*/
407 ;
408
409 EFI_STATUS
410 EFIAPI
411 SecUnixPeCoffLoaderFreeLibrary (
412 OUT VOID *ModHandle
413 )
414 /*++
415
416 Routine Description:
417
418 TODO: Add function description
419
420 Arguments:
421
422 ModHandle - TODO: add argument description
423
424 Returns:
425
426 TODO: add return values
427
428 --*/
429 ;
430
431 EFI_STATUS
432 EFIAPI
433 SecUnixFdAddress (
434 IN UINTN Index,
435 IN OUT EFI_PHYSICAL_ADDRESS *FdBase,
436 IN OUT UINT64 *FdSize,
437 IN OUT EFI_PHYSICAL_ADDRESS *FixUp
438 )
439 ;
440
441 EFI_STATUS
442 EFIAPI
443 GasketSecUnixFdAddress (
444 IN UINTN Index,
445 IN OUT EFI_PHYSICAL_ADDRESS *FdBase,
446 IN OUT UINT64 *FdSize,
447 IN OUT EFI_PHYSICAL_ADDRESS *FixUp
448 )
449 ;
450
451
452 EFI_STATUS
453 GetImageReadFunction (
454 IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,
455 IN EFI_PHYSICAL_ADDRESS *TopOfMemory
456 )
457 /*++
458
459 Routine Description:
460
461 TODO: Add function description
462
463 Arguments:
464
465 ImageContext - TODO: add argument description
466 TopOfMemory - TODO: add argument description
467
468 Returns:
469
470 TODO: add return values
471
472 --*/
473 ;
474
475 EFI_STATUS
476 EFIAPI
477 SecImageRead (
478 IN VOID *FileHandle,
479 IN UINTN FileOffset,
480 IN OUT UINTN *ReadSize,
481 OUT VOID *Buffer
482 )
483 /*++
484
485 Routine Description:
486
487 TODO: Add function description
488
489 Arguments:
490
491 FileHandle - TODO: add argument description
492 FileOffset - TODO: add argument description
493 ReadSize - TODO: add argument description
494 Buffer - TODO: add argument description
495
496 Returns:
497
498 TODO: add return values
499
500 --*/
501 ;
502
503 CHAR16 *
504 AsciiToUnicode (
505 IN CHAR8 *Ascii,
506 IN UINTN *StrLen OPTIONAL
507 )
508 /*++
509
510 Routine Description:
511
512 TODO: Add function description
513
514 Arguments:
515
516 Ascii - TODO: add argument description
517 StrLen - TODO: add argument description
518
519 Returns:
520
521 TODO: add return values
522
523 --*/
524 ;
525
526 UINTN
527 CountSeperatorsInString (
528 IN const CHAR16 *String,
529 IN CHAR16 Seperator
530 )
531 /*++
532
533 Routine Description:
534
535 TODO: Add function description
536
537 Arguments:
538
539 String - TODO: add argument description
540 Seperator - TODO: add argument description
541
542 Returns:
543
544 TODO: add return values
545
546 --*/
547 ;
548
549 EFI_STATUS
550 EFIAPI
551 SecTemporaryRamSupport (
552 IN CONST EFI_PEI_SERVICES **PeiServices,
553 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,
554 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,
555 IN UINTN CopySize
556 );
557
558 EFI_STATUS
559 EFIAPI
560 GasketSecTemporaryRamSupport (
561 IN CONST EFI_PEI_SERVICES **PeiServices,
562 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,
563 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,
564 IN UINTN CopySize
565 );
566
567
568 RETURN_STATUS
569 EFIAPI
570 SecPeCoffGetEntryPoint (
571 IN VOID *Pe32Data,
572 IN OUT VOID **EntryPoint
573 );
574
575 VOID
576 EFIAPI
577 SecPeCoffRelocateImageExtraAction (
578 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
579 );
580
581 VOID
582 EFIAPI
583 SecPeCoffLoaderUnloadImageExtraAction (
584 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
585 );
586
587
588 VOID SetTimer (UINT64 PeriodMs, VOID (*CallBack)(UINT64 DeltaMs));
589 void msSleep (unsigned long Milliseconds);
590 void GetLocalTime (EFI_TIME *Time);
591 void TzSet (void);
592 long GetTimeZone(void);
593 int GetDayLight(void);
594 int GetErrno(void);
595 void UnixEnableInterrupt (void);
596 void UnixDisableInterrupt (void);
597 BOOLEAN UnixInterruptEanbled (void);
598
599
600
601 extern EFI_UNIX_THUNK_PROTOCOL *gUnix;