summaryrefslogtreecommitdiff
path: root/ArmPkg/Library/BdsLib/BdsInternal.h
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-06-11 11:56:30 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-06-11 11:56:30 +0000
commita355a3654f0af22db9f68d988dbb4c72b835f414 (patch)
treeed34e67320d2f483270a79887138ea02a196c474 /ArmPkg/Library/BdsLib/BdsInternal.h
parente6b3b50834110bc796a3706d6de80de113f439d2 (diff)
downloadedk2-platforms-a355a3654f0af22db9f68d988dbb4c72b835f414.tar.xz
ArmPkg/BdsLib: Upgrade the library to use natively the Device Path
The previous version was using the string representation of the Device Path. This new version takes as paramater the binary representation of the Device Path It also tries to detect which kind of device support it refers by using the remaining part of the Device Path after it has been loaded by gBS->ConnectController() Lots of bug have been fixed as well in this new version. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11799 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Library/BdsLib/BdsInternal.h')
-rw-r--r--ArmPkg/Library/BdsLib/BdsInternal.h127
1 files changed, 40 insertions, 87 deletions
diff --git a/ArmPkg/Library/BdsLib/BdsInternal.h b/ArmPkg/Library/BdsLib/BdsInternal.h
index 07f722e03f..a497df03ea 100644
--- a/ArmPkg/Library/BdsLib/BdsInternal.h
+++ b/ArmPkg/Library/BdsLib/BdsInternal.h
@@ -24,6 +24,7 @@
#include <Library/MemoryAllocationLib.h>
#include <Library/DebugLib.h>
#include <Library/BdsUnixLib.h>
+#include <Library/PerformanceLib.h>
#include <Guid/FileInfo.h>
@@ -31,106 +32,58 @@
#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