/** @file\r
*\r
-* Copyright (c) 2011, ARM Limited. All rights reserved.\r
+* Copyright (c) 2011-2014, ARM Limited. All rights reserved.\r
*\r
* This program and the accompanying materials\r
* are licensed and made available under the terms and conditions of the BSD License\r
#include <PiDxe.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/BdsLib.h>\r
-#include <Library/BdsUnixLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/DevicePathLib.h>\r
#include <Library/UefiLib.h>\r
#define BOOT_DEVICE_DESCRIPTION_MAX 100\r
#define BOOT_DEVICE_FILEPATH_MAX 100\r
#define BOOT_DEVICE_OPTION_MAX 300\r
-#define BOOT_DEVICE_ADDRESS_MAX 20\r
+#define BOOT_DEVICE_ADDRESS_MAX (sizeof(L"0x0000000000000000"))\r
\r
#define ARM_BDS_OPTIONAL_DATA_SIGNATURE SIGNATURE_32('a', 'b', 'o', 'd')\r
\r
#define IS_ARM_BDS_BOOTENTRY(ptr) (ReadUnaligned32 ((CONST UINT32*)&((ARM_BDS_LOADER_OPTIONAL_DATA*)((ptr)->OptionalData))->Header.Signature) == ARM_BDS_OPTIONAL_DATA_SIGNATURE)\r
\r
+#define UPDATE_BOOT_ENTRY L"Update entry: "\r
+#define DELETE_BOOT_ENTRY L"Delete entry: "\r
+\r
typedef enum {\r
BDS_LOADER_EFI_APPLICATION = 0,\r
BDS_LOADER_KERNEL_LINUX_ATAG,\r
typedef struct {\r
UINT16 CmdLineSize;\r
UINT16 InitrdSize;\r
- \r
+\r
// These following fields have variable length and are packed:\r
//CHAR8 *CmdLine;\r
//EFI_DEVICE_PATH_PROTOCOL *InitrdPathList;\r
} BDS_SUPPORTED_DEVICE_TYPE;\r
\r
typedef struct {\r
- LIST_ENTRY Link;\r
- CHAR16 Description[BOOT_DEVICE_DESCRIPTION_MAX];\r
- EFI_DEVICE_PATH_PROTOCOL* DevicePathProtocol;\r
+ LIST_ENTRY Link;\r
+ CHAR16 Description[BOOT_DEVICE_DESCRIPTION_MAX];\r
+ EFI_DEVICE_PATH_PROTOCOL* DevicePathProtocol;\r
struct _BDS_LOAD_OPTION_SUPPORT* Support;\r
} BDS_SUPPORTED_DEVICE;\r
\r
typedef struct _BDS_LOAD_OPTION_SUPPORT {\r
BDS_SUPPORTED_DEVICE_TYPE Type;\r
EFI_STATUS (*ListDevices)(IN OUT LIST_ENTRY* BdsLoadOptionList);\r
- BOOLEAN (*IsSupported)(IN BDS_LOAD_OPTION* BdsLoadOption);\r
- EFI_STATUS (*CreateDevicePathNode)(IN BDS_SUPPORTED_DEVICE* BdsLoadOption, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNode, OUT ARM_BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);\r
- EFI_STATUS (*UpdateDevicePathNode)(IN EFI_DEVICE_PATH *OldDevicePath, OUT EFI_DEVICE_PATH_PROTOCOL** NewDevicePath, OUT ARM_BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);\r
+ BOOLEAN (*IsSupported)(IN EFI_DEVICE_PATH *DevicePath);\r
+ EFI_STATUS (*CreateDevicePathNode)(IN CHAR16* FileName, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, OUT ARM_BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);\r
+ EFI_STATUS (*UpdateDevicePathNode)(IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, OUT EFI_DEVICE_PATH_PROTOCOL** NewDevicePath, OUT ARM_BDS_LOADER_TYPE *BootType, OUT UINT32 *Attributes);\r
} BDS_LOAD_OPTION_SUPPORT;\r
\r
#define LOAD_OPTION_ENTRY_FROM_LINK(a) BASE_CR(a, BDS_LOAD_OPTION_ENTRY, Link)\r
#define LOAD_OPTION_FROM_LINK(a) ((BDS_LOAD_OPTION_ENTRY*)BASE_CR(a, BDS_LOAD_OPTION_ENTRY, Link))->BdsLoadOption\r
\r
-EFI_STATUS\r
-GetEnvironmentVariable (\r
- IN CONST CHAR16* VariableName,\r
- IN VOID* DefaultValue,\r
- IN OUT UINTN* Size,\r
- OUT VOID** Value\r
- );\r
-\r
EFI_STATUS\r
BootDeviceListSupportedInit (\r
IN OUT LIST_ENTRY *SupportedDeviceList\r
\r
EFI_STATUS\r
BootDeviceGetDeviceSupport (\r
- IN BDS_LOAD_OPTION *BootOption,\r
- OUT BDS_LOAD_OPTION_SUPPORT** DeviceSupport\r
+ IN EFI_DEVICE_PATH *DevicePath,\r
+ OUT BDS_LOAD_OPTION_SUPPORT **DeviceSupport\r
);\r
\r
EFI_STATUS\r