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