]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/BdsLib/BdsInternal.h
ArmPkg/BdsLib: Upgrade the library to use natively the Device Path
[mirror_edk2.git] / ArmPkg / Library / BdsLib / BdsInternal.h
index 07f722e03fdd65a515a12ad94dd6f853fcf924b1..a497df03ea97abbce779dc2ebb242333a58b18a1 100644 (file)
@@ -24,6 +24,7 @@
 #include <Library/MemoryAllocationLib.h>
 #include <Library/DebugLib.h>
 #include <Library/BdsUnixLib.h>
+#include <Library/PerformanceLib.h>
 
 #include <Guid/FileInfo.h>
 
 #include <Protocol/DevicePathFromText.h>
 #include <Protocol/SimpleFileSystem.h>
 #include <Protocol/FirmwareVolume2.h>
+#include <Protocol/LoadFile.h>
+#include <Protocol/PxeBaseCode.h>
 
 
-typedef enum { BDS_FILETYPE_MEM, BDS_FILETYPE_FS, BDS_FILETYPE_FV } BDS_FILE_TYPE;
+typedef BOOLEAN (*BDS_FILE_LOADER_SUPPORT) (
+    IN EFI_DEVICE_PATH            *DevicePath,
+    IN EFI_HANDLE                 Handle,
+    IN EFI_DEVICE_PATH            *RemainingDevicePath
+    );
 
-typedef struct {
-    UINT32                  MemoryType;
-    EFI_PHYSICAL_ADDRESS    StartingAddress;
-    EFI_PHYSICAL_ADDRESS    EndingAddress;
-} BDS_MEM_FILE;
-
-typedef struct {
-    EFI_FILE_PROTOCOL   *Handle;
-} BDS_FS_FILE;
+typedef EFI_STATUS (*BDS_FILE_LOADER_LOAD_IMAGE) (
+    IN     EFI_DEVICE_PATH        *DevicePath,
+    IN     EFI_HANDLE             Handle,
+    IN     EFI_DEVICE_PATH        *RemainingDevicePath,
+    IN     EFI_ALLOCATE_TYPE      Type,
+    IN OUT EFI_PHYSICAL_ADDRESS*  Image,
+    OUT    UINTN                  *ImageSize
+    );
 
 typedef struct {
-    EFI_FIRMWARE_VOLUME2_PROTOCOL *FvProtocol;
-    EFI_FV_FILETYPE               FileType;
-    EFI_GUID            Guid;
-} BDS_FV_FILE;
-
-typedef struct _BDS_FILE {
-    CHAR16* FilePath;
-    EFI_DEVICE_PATH_PROTOCOL    *DevicePath;
-    BDS_FILE_TYPE Type;
-    union {
-        BDS_MEM_FILE    Mem;
-        BDS_FS_FILE Fs;
-        BDS_FV_FILE Fv;
-    } File;
-} BDS_FILE;
+  BDS_FILE_LOADER_SUPPORT     Support;
+  BDS_FILE_LOADER_LOAD_IMAGE  LoadImage;
+} BDS_FILE_LOADER;
 
 typedef struct _BDS_SYSTEM_MEMORY_RESOURCE {
-    LIST_ENTRY                  Link; // This attribute must be the first entry of this structure (to avoid pointer computation)
-    EFI_PHYSICAL_ADDRESS        PhysicalStart;
-    UINT64                      ResourceLength;
+  LIST_ENTRY                  Link; // This attribute must be the first entry of this structure (to avoid pointer computation)
+  EFI_PHYSICAL_ADDRESS        PhysicalStart;
+  UINT64                      ResourceLength;
 } BDS_SYSTEM_MEMORY_RESOURCE;
 
 
 // BdsHelper.c
 EFI_STATUS
-ShutdownUefiBootServices( VOID );
+ShutdownUefiBootServices (
+  VOID
+  );
 
 EFI_STATUS
-GetSystemMemoryResources (LIST_ENTRY *ResourceList);
-
-// BdsFilePath.c
-EFI_STATUS BdsLoadDevicePath(
-    IN  EFI_DEVICE_PATH_PROTOCOL* DevicePath,
-    OUT EFI_HANDLE                *Handle
-);
-
-EFI_STATUS BdsLoadFilePath(
-    IN  CONST CHAR16        *DeviceFilePath,
-    OUT BDS_FILE            *File
-);
-
-EFI_STATUS BdsCopyRawFileToRuntimeMemory(
-    IN  BDS_FILE            *File,
-    OUT VOID                **FileImage,
-    OUT UINTN               *FileSize
-);
-
-// BdsFilePathFs.c
-EFI_STATUS BdsLoadFileFromSimpleFileSystem(
-    IN  EFI_HANDLE Handle,
-    IN  CHAR16                              *FilePath,
-    OUT BDS_FILE            *File
-);
-
-EFI_STATUS BdsCopyRawFileToRuntimeMemoryFS(
-    IN  EFI_FILE_PROTOCOL   *File,
-    OUT VOID                **FileImage,
-    OUT UINTN               *FileSize
-);
-
-// BdsFilePathFv.c
-EFI_STATUS BdsLoadFileFromFirmwareVolume(
-    IN  EFI_HANDLE          FvHandle,
-    IN  CHAR16                              *FilePath,
-    IN  EFI_FV_FILETYPE     FileTypeFilter,
-    OUT BDS_FILE            *File
-);
-
-EFI_STATUS BdsCopyRawFileToRuntimeMemoryFV(
-    IN  BDS_FV_FILE         *FvFile,
-    OUT VOID                **FileImage,
-    OUT UINTN               *FileSize
-);
-
-// BdsFilePathMem.c
-EFI_STATUS BdsLoadFileFromMemMap (
-    IN  EFI_HANDLE                  Handle,
-    IN  EFI_DEVICE_PATH_PROTOCOL    *DevicePath,
-    OUT BDS_FILE                    *File
-);
-
-EFI_STATUS BdsCopyRawFileToRuntimeMemoryMemMap(
-    IN  BDS_MEM_FILE        *MemFile,
-    OUT VOID                **FileImage,
-    OUT UINTN               *FileSize
-);
+GetSystemMemoryResources (
+  LIST_ENTRY *ResourceList
+  );
+
+VOID
+PrintPerformance (
+  VOID
+  );
+EFI_STATUS
+BdsLoadImage (
+  IN     EFI_DEVICE_PATH       *DevicePath,
+  IN     EFI_ALLOCATE_TYPE     Type,
+  IN OUT EFI_PHYSICAL_ADDRESS* Image,
+  OUT    UINTN                 *FileSize
+  );
 
 #endif