Revision: 17410
http://sourceforge.net/p/edk2/code/17410
Author: oliviermartin
Date: 2015-05-11 17:37:24 +0000 (Mon, 11 May 2015)
Log Message:
-----------
ArmPkg: update BdsLib to updated definition of EFI_LOAD_OPTION
Since there is now a formal definition of EFI_LOAD_OPTION, we can no
longer typedef it as a UINT8*. So update the code to use the common
definition, which is not a pointer type, hence the additional changes
to the C code.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <[email protected]>
Signed-off-by: Olivier Martin <[email protected]>
Reviewed-by: Ronald Cron <[email protected]>
Modified Paths:
--------------
trunk/edk2/ArmPkg/Include/Library/BdsLib.h
trunk/edk2/ArmPkg/Library/BdsLib/BdsLoadOption.c
trunk/edk2/ArmPlatformPkg/Bds/BootOption.c
Modified: trunk/edk2/ArmPkg/Include/Library/BdsLib.h
===================================================================
--- trunk/edk2/ArmPkg/Include/Library/BdsLib.h 2015-05-11 17:36:09 UTC (rev
17409)
+++ trunk/edk2/ArmPkg/Include/Library/BdsLib.h 2015-05-11 17:37:24 UTC (rev
17410)
@@ -15,14 +15,12 @@
#ifndef __BDS_ENTRY_H__
#define __BDS_ENTRY_H__
-typedef UINT8* EFI_LOAD_OPTION;
-
/**
This is defined by the UEFI specs, don't change it
**/
typedef struct {
UINT16 LoadOptionIndex;
- EFI_LOAD_OPTION LoadOption;
+ EFI_LOAD_OPTION *LoadOption;
UINTN LoadOptionSize;
UINT32 Attributes;
Modified: trunk/edk2/ArmPkg/Library/BdsLib/BdsLoadOption.c
===================================================================
--- trunk/edk2/ArmPkg/Library/BdsLib/BdsLoadOption.c 2015-05-11 17:36:09 UTC
(rev 17409)
+++ trunk/edk2/ArmPkg/Library/BdsLib/BdsLoadOption.c 2015-05-11 17:37:24 UTC
(rev 17410)
@@ -16,13 +16,14 @@
EFI_STATUS
BootOptionParseLoadOption (
- IN EFI_LOAD_OPTION EfiLoadOption,
+ IN EFI_LOAD_OPTION *EfiLoadOption,
IN UINTN EfiLoadOptionSize,
IN OUT BDS_LOAD_OPTION **BdsLoadOption
)
{
BDS_LOAD_OPTION *LoadOption;
UINTN DescriptionLength;
+ UINTN EfiLoadOptionPtr;
if (EfiLoadOption == NULL) {
return EFI_INVALID_PARAMETER;
@@ -41,22 +42,23 @@
LoadOption = *BdsLoadOption;
}
+ EfiLoadOptionPtr = (UINTN)EfiLoadOption;
LoadOption->LoadOption = EfiLoadOption;
LoadOption->LoadOptionSize = EfiLoadOptionSize;
- LoadOption->Attributes = *(UINT32*)EfiLoadOption;
- LoadOption->FilePathListLength = *(UINT16*)(EfiLoadOption + sizeof(UINT32));
- LoadOption->Description = (CHAR16*)(EfiLoadOption + sizeof(UINT32) +
sizeof(UINT16));
+ LoadOption->Attributes = *(UINT32*)EfiLoadOptionPtr;
+ LoadOption->FilePathListLength = *(UINT16*)(EfiLoadOptionPtr +
sizeof(UINT32));
+ LoadOption->Description = (CHAR16*)(EfiLoadOptionPtr + sizeof(UINT32)
+ sizeof(UINT16));
DescriptionLength = StrSize (LoadOption->Description);
- LoadOption->FilePathList = (EFI_DEVICE_PATH_PROTOCOL*)(EfiLoadOption +
sizeof(UINT32) + sizeof(UINT16) + DescriptionLength);
+ LoadOption->FilePathList =
(EFI_DEVICE_PATH_PROTOCOL*)(EfiLoadOptionPtr + sizeof(UINT32) + sizeof(UINT16)
+ DescriptionLength);
// If ((End of EfiLoadOptiony - Start of EfiLoadOption) ==
EfiLoadOptionSize) then No Optional Data
- if ((UINTN)((UINTN)LoadOption->FilePathList + LoadOption->FilePathListLength
- (UINTN)EfiLoadOption) == EfiLoadOptionSize) {
+ if ((UINTN)((UINTN)LoadOption->FilePathList + LoadOption->FilePathListLength
- EfiLoadOptionPtr) == EfiLoadOptionSize) {
LoadOption->OptionalData = NULL;
LoadOption->OptionalDataSize = 0;
} else {
LoadOption->OptionalData = (VOID*)((UINTN)(LoadOption->FilePathList) +
LoadOption->FilePathListLength);
- LoadOption->OptionalDataSize = EfiLoadOptionSize -
((UINTN)LoadOption->OptionalData - (UINTN)EfiLoadOption);
+ LoadOption->OptionalDataSize = EfiLoadOptionSize -
((UINTN)LoadOption->OptionalData - EfiLoadOptionPtr);
}
if (*BdsLoadOption == NULL) {
@@ -73,7 +75,7 @@
)
{
EFI_STATUS Status;
- EFI_LOAD_OPTION EfiLoadOption;
+ EFI_LOAD_OPTION *EfiLoadOption;
UINTN EfiLoadOptionSize;
Status = GetGlobalEnvironmentVariable (BootVariableName, NULL,
&EfiLoadOptionSize, (VOID**)&EfiLoadOption);
@@ -141,12 +143,12 @@
// Allocate the memory for the EFI Load Option
BdsLoadOption->LoadOptionSize = sizeof(UINT32) + sizeof(UINT16) +
DescriptionSize + BdsLoadOption->FilePathListLength +
BdsLoadOption->OptionalDataSize;
- BdsLoadOption->LoadOption = (EFI_LOAD_OPTION)AllocateZeroPool
(BdsLoadOption->LoadOptionSize);
+ BdsLoadOption->LoadOption = (EFI_LOAD_OPTION *)AllocateZeroPool
(BdsLoadOption->LoadOptionSize);
if (BdsLoadOption->LoadOption == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- EfiLoadOptionPtr = BdsLoadOption->LoadOption;
+ EfiLoadOptionPtr = (UINT8 *) BdsLoadOption->LoadOption;
//
// Populate the EFI Load Option and BDS Boot Option structures
Modified: trunk/edk2/ArmPlatformPkg/Bds/BootOption.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Bds/BootOption.c 2015-05-11 17:36:09 UTC (rev
17409)
+++ trunk/edk2/ArmPlatformPkg/Bds/BootOption.c 2015-05-11 17:37:24 UTC (rev
17410)
@@ -141,7 +141,7 @@
IN UINTN OptionalDataSize
)
{
- EFI_LOAD_OPTION EfiLoadOption;
+ EFI_LOAD_OPTION *EfiLoadOption;
UINTN EfiLoadOptionSize;
UINTN BootDescriptionSize;
UINT16 FilePathListLength;
@@ -168,8 +168,8 @@
// Allocate the memory for the EFI Load Option
EfiLoadOptionSize = sizeof(UINT32) + sizeof(UINT16) + BootDescriptionSize +
FilePathListLength + OptionalDataSize;
- EfiLoadOption = (EFI_LOAD_OPTION)AllocatePool(EfiLoadOptionSize);
- EfiLoadOptionPtr = EfiLoadOption;
+ EfiLoadOption = (EFI_LOAD_OPTION *)AllocatePool(EfiLoadOptionSize);
+ EfiLoadOptionPtr = (UINT8 *)EfiLoadOption;
//
// Populate the EFI Load Option and BDS Boot Option structures
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits