]>
Commit | Line | Data |
---|---|---|
1bfda055 | 1 | /** @file |
2 | * | |
3 | * Copyright (c) 2011, ARM Limited. All rights reserved. | |
4 | * | |
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 | ||
15 | #ifndef __BDS_INTERNAL_H__ | |
16 | #define __BDS_INTERNAL_H__ | |
17 | ||
18 | #include <PiDxe.h> | |
19 | #include <Library/BaseLib.h> | |
20 | #include <Library/BaseMemoryLib.h> | |
21 | #include <Library/UefiBootServicesTableLib.h> | |
22 | #include <Library/UefiLib.h> | |
23 | #include <Library/DevicePathLib.h> | |
24 | #include <Library/MemoryAllocationLib.h> | |
25 | #include <Library/DebugLib.h> | |
26 | #include <Library/BdsUnixLib.h> | |
27 | ||
28 | #include <Guid/FileInfo.h> | |
29 | ||
30 | #include <Protocol/DevicePath.h> | |
31 | #include <Protocol/DevicePathFromText.h> | |
32 | #include <Protocol/SimpleFileSystem.h> | |
33 | #include <Protocol/FirmwareVolume2.h> | |
34 | ||
35 | ||
36 | typedef enum { BDS_FILETYPE_MEM, BDS_FILETYPE_FS, BDS_FILETYPE_FV } BDS_FILE_TYPE; | |
37 | ||
38 | typedef struct { | |
39 | UINT32 MemoryType; | |
40 | EFI_PHYSICAL_ADDRESS StartingAddress; | |
41 | EFI_PHYSICAL_ADDRESS EndingAddress; | |
42 | } BDS_MEM_FILE; | |
43 | ||
44 | typedef struct { | |
45 | EFI_FILE_PROTOCOL *Handle; | |
46 | } BDS_FS_FILE; | |
47 | ||
48 | typedef struct { | |
49 | EFI_FIRMWARE_VOLUME2_PROTOCOL *FvProtocol; | |
50 | EFI_FV_FILETYPE FileType; | |
51 | EFI_GUID Guid; | |
52 | } BDS_FV_FILE; | |
53 | ||
54 | typedef struct _BDS_FILE { | |
55 | CHAR16* FilePath; | |
56 | EFI_DEVICE_PATH_PROTOCOL *DevicePath; | |
57 | BDS_FILE_TYPE Type; | |
58 | union { | |
59 | BDS_MEM_FILE Mem; | |
60 | BDS_FS_FILE Fs; | |
61 | BDS_FV_FILE Fv; | |
62 | } File; | |
63 | } BDS_FILE; | |
64 | ||
65 | typedef struct _BDS_SYSTEM_MEMORY_RESOURCE { | |
66 | LIST_ENTRY Link; // This attribute must be the first entry of this structure (to avoid pointer computation) | |
67 | EFI_PHYSICAL_ADDRESS PhysicalStart; | |
68 | UINT64 ResourceLength; | |
69 | } BDS_SYSTEM_MEMORY_RESOURCE; | |
70 | ||
71 | ||
72 | // BdsHelper.c | |
73 | EFI_STATUS | |
74 | ShutdownUefiBootServices( VOID ); | |
75 | ||
76 | EFI_STATUS | |
77 | GetSystemMemoryResources (LIST_ENTRY *ResourceList); | |
78 | ||
79 | // BdsFilePath.c | |
80 | EFI_STATUS BdsLoadDevicePath( | |
81 | IN EFI_DEVICE_PATH_PROTOCOL* DevicePath, | |
82 | OUT EFI_HANDLE *Handle | |
83 | ); | |
84 | ||
85 | EFI_STATUS BdsLoadFilePath( | |
86 | IN CONST CHAR16 *DeviceFilePath, | |
87 | OUT BDS_FILE *File | |
88 | ); | |
89 | ||
90 | EFI_STATUS BdsCopyRawFileToRuntimeMemory( | |
91 | IN BDS_FILE *File, | |
92 | OUT VOID **FileImage, | |
93 | OUT UINTN *FileSize | |
94 | ); | |
95 | ||
96 | // BdsFilePathFs.c | |
97 | EFI_STATUS BdsLoadFileFromSimpleFileSystem( | |
98 | IN EFI_HANDLE Handle, | |
99 | IN CHAR16 *FilePath, | |
100 | OUT BDS_FILE *File | |
101 | ); | |
102 | ||
103 | EFI_STATUS BdsCopyRawFileToRuntimeMemoryFS( | |
104 | IN EFI_FILE_PROTOCOL *File, | |
105 | OUT VOID **FileImage, | |
106 | OUT UINTN *FileSize | |
107 | ); | |
108 | ||
109 | // BdsFilePathFv.c | |
110 | EFI_STATUS BdsLoadFileFromFirmwareVolume( | |
111 | IN EFI_HANDLE FvHandle, | |
112 | IN CHAR16 *FilePath, | |
113 | IN EFI_FV_FILETYPE FileTypeFilter, | |
114 | OUT BDS_FILE *File | |
115 | ); | |
116 | ||
117 | EFI_STATUS BdsCopyRawFileToRuntimeMemoryFV( | |
118 | IN BDS_FV_FILE *FvFile, | |
119 | OUT VOID **FileImage, | |
120 | OUT UINTN *FileSize | |
121 | ); | |
122 | ||
123 | // BdsFilePathMem.c | |
124 | EFI_STATUS BdsLoadFileFromMemMap ( | |
125 | IN EFI_HANDLE Handle, | |
126 | IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, | |
127 | OUT BDS_FILE *File | |
128 | ); | |
129 | ||
130 | EFI_STATUS BdsCopyRawFileToRuntimeMemoryMemMap( | |
131 | IN BDS_MEM_FILE *MemFile, | |
132 | OUT VOID **FileImage, | |
133 | OUT UINTN *FileSize | |
134 | ); | |
135 | ||
136 | #endif |