3 * Copyright (c) 2011, ARM Limited. All rights reserved.
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
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.
15 #ifndef __BDS_INTERNAL_H__
16 #define __BDS_INTERNAL_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>
28 #include <Guid/FileInfo.h>
30 #include <Protocol/DevicePath.h>
31 #include <Protocol/DevicePathFromText.h>
32 #include <Protocol/SimpleFileSystem.h>
33 #include <Protocol/FirmwareVolume2.h>
36 typedef enum { BDS_FILETYPE_MEM
, BDS_FILETYPE_FS
, BDS_FILETYPE_FV
} BDS_FILE_TYPE
;
40 EFI_PHYSICAL_ADDRESS StartingAddress
;
41 EFI_PHYSICAL_ADDRESS EndingAddress
;
45 EFI_FILE_PROTOCOL
*Handle
;
49 EFI_FIRMWARE_VOLUME2_PROTOCOL
*FvProtocol
;
50 EFI_FV_FILETYPE FileType
;
54 typedef struct _BDS_FILE
{
56 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
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
;
74 ShutdownUefiBootServices( VOID
);
77 GetSystemMemoryResources (LIST_ENTRY
*ResourceList
);
80 EFI_STATUS
BdsLoadDevicePath(
81 IN EFI_DEVICE_PATH_PROTOCOL
* DevicePath
,
82 OUT EFI_HANDLE
*Handle
85 EFI_STATUS
BdsLoadFilePath(
86 IN CONST CHAR16
*DeviceFilePath
,
90 EFI_STATUS
BdsCopyRawFileToRuntimeMemory(
97 EFI_STATUS
BdsLoadFileFromSimpleFileSystem(
103 EFI_STATUS
BdsCopyRawFileToRuntimeMemoryFS(
104 IN EFI_FILE_PROTOCOL
*File
,
105 OUT VOID
**FileImage
,
110 EFI_STATUS
BdsLoadFileFromFirmwareVolume(
111 IN EFI_HANDLE FvHandle
,
113 IN EFI_FV_FILETYPE FileTypeFilter
,
117 EFI_STATUS
BdsCopyRawFileToRuntimeMemoryFV(
118 IN BDS_FV_FILE
*FvFile
,
119 OUT VOID
**FileImage
,
124 EFI_STATUS
BdsLoadFileFromMemMap (
125 IN EFI_HANDLE Handle
,
126 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath
,
130 EFI_STATUS
BdsCopyRawFileToRuntimeMemoryMemMap(
131 IN BDS_MEM_FILE
*MemFile
,
132 OUT VOID
**FileImage
,