ArmPkg: Introduce GetGlobalEnvironmentVariable() function.

Rename GetEnvironmentVariable() function into GetGlobalEnvironmentVariable().
GetEnvironmentVariable() function sill exists but caller must now pass a Guid.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14176 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin 2013-03-12 00:42:59 +00:00
parent 7135d76d56
commit c0b2e4775d
10 changed files with 104 additions and 84 deletions

View File

@ -1,6 +1,6 @@
/** @file /** @file
* *
* Copyright (c) 2011-2012, ARM Limited. All rights reserved. * Copyright (c) 2011-2013, ARM Limited. All rights reserved.
* *
* This program and the accompanying materials * This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License * are licensed and made available under the terms and conditions of the BSD License
@ -204,7 +204,7 @@ LinuxLoaderConfig (
Choice = LINUX_LOADER_NEW; Choice = LINUX_LOADER_NEW;
// Scan the OptionalData of every entry for the correct signature // Scan the OptionalData of every entry for the correct signature
Status = GetEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder); Status = GetGlobalEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder);
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
BootOrderCount = BootOrderSize / sizeof(UINT16); BootOrderCount = BootOrderSize / sizeof(UINT16);

View File

@ -1,6 +1,6 @@
/** @file /** @file
* *
* Copyright (c) 2011, ARM Limited. All rights reserved. * Copyright (c) 2013, ARM Limited. All rights reserved.
* *
* This program and the accompanying materials * This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License * are licensed and made available under the terms and conditions of the BSD License
@ -66,9 +66,18 @@ BdsConnectAllDrivers (
VOID VOID
); );
EFI_STATUS
GetGlobalEnvironmentVariable (
IN CONST CHAR16* VariableName,
IN VOID* DefaultValue,
IN OUT UINTN* Size,
OUT VOID** Value
);
EFI_STATUS EFI_STATUS
GetEnvironmentVariable ( GetEnvironmentVariable (
IN CONST CHAR16* VariableName, IN CONST CHAR16* VariableName,
IN EFI_GUID* VendorGuid,
IN VOID* DefaultValue, IN VOID* DefaultValue,
IN OUT UINTN* Size, IN OUT UINTN* Size,
OUT VOID** Value OUT VOID** Value

View File

@ -1,6 +1,6 @@
/** @file /** @file
* *
* Copyright (c) 2011-2012, ARM Limited. All rights reserved. * Copyright (c) 2011-2013, ARM Limited. All rights reserved.
* *
* This program and the accompanying materials * This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License * are licensed and made available under the terms and conditions of the BSD License
@ -293,9 +293,22 @@ PrintPerformance (
SerialPortWrite ((UINT8 *) Buffer, CharCount); SerialPortWrite ((UINT8 *) Buffer, CharCount);
} }
EFI_STATUS
GetGlobalEnvironmentVariable (
IN CONST CHAR16* VariableName,
IN VOID* DefaultValue,
IN OUT UINTN* Size,
OUT VOID** Value
)
{
return GetEnvironmentVariable (VariableName, &gEfiGlobalVariableGuid,
DefaultValue, Size, Value);
}
EFI_STATUS EFI_STATUS
GetEnvironmentVariable ( GetEnvironmentVariable (
IN CONST CHAR16* VariableName, IN CONST CHAR16* VariableName,
IN EFI_GUID* VendorGuid,
IN VOID* DefaultValue, IN VOID* DefaultValue,
IN OUT UINTN* Size, IN OUT UINTN* Size,
OUT VOID** Value OUT VOID** Value
@ -307,13 +320,13 @@ GetEnvironmentVariable (
// Try to get the variable size. // Try to get the variable size.
*Value = NULL; *Value = NULL;
VariableSize = 0; VariableSize = 0;
Status = gRT->GetVariable ((CHAR16 *) VariableName, &gEfiGlobalVariableGuid, NULL, &VariableSize, *Value); Status = gRT->GetVariable ((CHAR16 *) VariableName, VendorGuid, NULL, &VariableSize, *Value);
if (Status == EFI_NOT_FOUND) { if (Status == EFI_NOT_FOUND) {
if ((DefaultValue != NULL) && (Size != NULL) && (*Size != 0)) { if ((DefaultValue != NULL) && (Size != NULL) && (*Size != 0)) {
// If the environment variable does not exist yet then set it with the default value // If the environment variable does not exist yet then set it with the default value
Status = gRT->SetVariable ( Status = gRT->SetVariable (
(CHAR16*)VariableName, (CHAR16*)VariableName,
&gEfiGlobalVariableGuid, VendorGuid,
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
*Size, *Size,
DefaultValue DefaultValue
@ -329,7 +342,7 @@ GetEnvironmentVariable (
return EFI_OUT_OF_RESOURCES; return EFI_OUT_OF_RESOURCES;
} }
Status = gRT->GetVariable ((CHAR16 *)VariableName, &gEfiGlobalVariableGuid, NULL, &VariableSize, *Value); Status = gRT->GetVariable ((CHAR16 *)VariableName, VendorGuid, NULL, &VariableSize, *Value);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
FreePool(*Value); FreePool(*Value);
return EFI_INVALID_PARAMETER; return EFI_INVALID_PARAMETER;

View File

@ -49,6 +49,7 @@
[Guids] [Guids]
gEfiFileInfoGuid gEfiFileInfoGuid
gArmMpCoreInfoGuid gArmMpCoreInfoGuid
gArmGlobalVariableGuid
[Protocols] [Protocols]
gEfiBdsArchProtocolGuid gEfiBdsArchProtocolGuid

View File

@ -1,6 +1,6 @@
/** @file /** @file
* *
* Copyright (c) 2011-2012, ARM Limited. All rights reserved. * Copyright (c) 2011-2013, ARM Limited. All rights reserved.
* *
* This program and the accompanying materials * This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License * are licensed and made available under the terms and conditions of the BSD License
@ -76,7 +76,7 @@ BootOptionFromLoadOptionVariable (
EFI_LOAD_OPTION EfiLoadOption; EFI_LOAD_OPTION EfiLoadOption;
UINTN EfiLoadOptionSize; UINTN EfiLoadOptionSize;
Status = GetEnvironmentVariable (BootVariableName, NULL, &EfiLoadOptionSize, (VOID**)&EfiLoadOption); Status = GetGlobalEnvironmentVariable (BootVariableName, NULL, &EfiLoadOptionSize, (VOID**)&EfiLoadOption);
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
*BdsLoadOption = NULL; *BdsLoadOption = NULL;
Status = BootOptionParseLoadOption (EfiLoadOption, EfiLoadOptionSize, BdsLoadOption); Status = BootOptionParseLoadOption (EfiLoadOption, EfiLoadOptionSize, BdsLoadOption);
@ -203,7 +203,7 @@ BootOptionToLoadOptionVariable (
// When it is a new entry we must add the entry to the BootOrder // When it is a new entry we must add the entry to the BootOrder
if (OldLoadOption == NULL) { if (OldLoadOption == NULL) {
// Add the new Boot Index to the list // Add the new Boot Index to the list
Status = GetEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder); Status = GetGlobalEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder);
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
BootOrder = ReallocatePool (BootOrderSize, BootOrderSize + sizeof(UINT16), BootOrder); BootOrder = ReallocatePool (BootOrderSize, BootOrderSize + sizeof(UINT16), BootOrder);
// Add the new index at the end // Add the new index at the end
@ -225,7 +225,7 @@ BootOptionToLoadOptionVariable (
); );
DEBUG((EFI_D_ERROR,"Create %s\n",BootVariableName)); DEBUG((EFI_D_ERROR,"Create %s\n",BootVariableName));
// Free memory allocated by GetEnvironmentVariable // Free memory allocated by GetGlobalEnvironmentVariable
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
FreePool (BootOrder); FreePool (BootOrder);
} }
@ -249,7 +249,7 @@ BootOptionAllocateBootIndex (
BOOLEAN Found; BOOLEAN Found;
// Get the Boot Option Order from the environment variable // Get the Boot Option Order from the environment variable
Status = GetEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder); Status = GetGlobalEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder);
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
for (BootIndex = 0; BootIndex <= 0xFFFF; BootIndex++) { for (BootIndex = 0; BootIndex <= 0xFFFF; BootIndex++) {
Found = FALSE; Found = FALSE;

View File

@ -1,6 +1,6 @@
/** @file /** @file
* *
* Copyright (c) 2011-2012, ARM Limited. All rights reserved. * Copyright (c) 2011-2013, ARM Limited. All rights reserved.
* *
* This program and the accompanying materials * This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License * are licensed and made available under the terms and conditions of the BSD License
@ -39,7 +39,7 @@ GetConsoleDevicePathFromVariable (
CHAR16* NextDevicePathStr; CHAR16* NextDevicePathStr;
EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL *EfiDevicePathFromTextProtocol; EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL *EfiDevicePathFromTextProtocol;
Status = GetEnvironmentVariable (ConsoleVarName, NULL, NULL, (VOID**)&DevicePathInstances); Status = GetGlobalEnvironmentVariable (ConsoleVarName, NULL, NULL, (VOID**)&DevicePathInstances);
if (EFI_ERROR(Status)) { if (EFI_ERROR(Status)) {
// In case no default console device path has been defined we assume a driver handles the console (eg: SimpleTextInOutSerial) // In case no default console device path has been defined we assume a driver handles the console (eg: SimpleTextInOutSerial)
if ((DefaultConsolePaths == NULL) || (DefaultConsolePaths[0] == L'\0')) { if ((DefaultConsolePaths == NULL) || (DefaultConsolePaths[0] == L'\0')) {
@ -313,7 +313,7 @@ StartDefaultBootOnTimeout (
Size = sizeof(UINT16); Size = sizeof(UINT16);
Timeout = (UINT16)PcdGet16 (PcdPlatformBootTimeOut); Timeout = (UINT16)PcdGet16 (PcdPlatformBootTimeOut);
TimeoutPtr = &Timeout; TimeoutPtr = &Timeout;
GetEnvironmentVariable (L"Timeout", &Timeout, &Size, (VOID**)&TimeoutPtr); GetGlobalEnvironmentVariable (L"Timeout", &Timeout, &Size, (VOID**)&TimeoutPtr);
if (Timeout != 0xFFFF) { if (Timeout != 0xFFFF) {
if (Timeout > 0) { if (Timeout > 0) {
@ -344,7 +344,7 @@ StartDefaultBootOnTimeout (
// In case of Timeout we start the default boot selection // In case of Timeout we start the default boot selection
if (Timeout == 0) { if (Timeout == 0) {
// Get the Boot Option Order from the environment variable (a default value should have been created) // Get the Boot Option Order from the environment variable (a default value should have been created)
GetEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder); GetGlobalEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder);
for (Index = 0; Index < BootOrderSize / sizeof (UINT16); Index++) { for (Index = 0; Index < BootOrderSize / sizeof (UINT16); Index++) {
UnicodeSPrint (BootVariableName, 9 * sizeof(CHAR16), L"Boot%04X", BootOrder[Index]); UnicodeSPrint (BootVariableName, 9 * sizeof(CHAR16), L"Boot%04X", BootOrder[Index]);
@ -408,7 +408,7 @@ BdsEntry (
// If BootNext environment variable is defined then we just load it ! // If BootNext environment variable is defined then we just load it !
BootNextSize = sizeof(UINT16); BootNextSize = sizeof(UINT16);
Status = GetEnvironmentVariable (L"BootNext", NULL, &BootNextSize, (VOID**)&BootNext); Status = GetGlobalEnvironmentVariable (L"BootNext", NULL, &BootNextSize, (VOID**)&BootNext);
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
ASSERT(BootNextSize == sizeof(UINT16)); ASSERT(BootNextSize == sizeof(UINT16));

View File

@ -1,6 +1,6 @@
/** @file /** @file
* *
* Copyright (c) 2011-2012, ARM Limited. All rights reserved. * Copyright (c) 2011-2013, ARM Limited. All rights reserved.
* *
* This program and the accompanying materials * This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License * are licensed and made available under the terms and conditions of the BSD License
@ -107,14 +107,6 @@ typedef struct _BDS_LOAD_OPTION_SUPPORT {
#define LOAD_OPTION_ENTRY_FROM_LINK(a) BASE_CR(a, BDS_LOAD_OPTION_ENTRY, Link) #define LOAD_OPTION_ENTRY_FROM_LINK(a) BASE_CR(a, BDS_LOAD_OPTION_ENTRY, Link)
#define LOAD_OPTION_FROM_LINK(a) ((BDS_LOAD_OPTION_ENTRY*)BASE_CR(a, BDS_LOAD_OPTION_ENTRY, Link))->BdsLoadOption #define LOAD_OPTION_FROM_LINK(a) ((BDS_LOAD_OPTION_ENTRY*)BASE_CR(a, BDS_LOAD_OPTION_ENTRY, Link))->BdsLoadOption
EFI_STATUS
GetEnvironmentVariable (
IN CONST CHAR16* VariableName,
IN VOID* DefaultValue,
IN OUT UINTN* Size,
OUT VOID** Value
);
EFI_STATUS EFI_STATUS
BootDeviceListSupportedInit ( BootDeviceListSupportedInit (
IN OUT LIST_ENTRY *SupportedDeviceList IN OUT LIST_ENTRY *SupportedDeviceList

View File

@ -12,6 +12,7 @@
* *
**/ **/
#include <Guid/ArmGlobalVariableHob.h>
#include "BdsInternal.h" #include "BdsInternal.h"
extern EFI_HANDLE mImageHandle; extern EFI_HANDLE mImageHandle;
@ -76,7 +77,8 @@ BootOptionStart (
// Get the FDT device path // Get the FDT device path
FdtDevicePathSize = GetDevicePathSize (DefaultFdtDevicePath); FdtDevicePathSize = GetDevicePathSize (DefaultFdtDevicePath);
Status = GetEnvironmentVariable ((CHAR16 *)L"Fdt", DefaultFdtDevicePath, &FdtDevicePathSize, (VOID **)&FdtDevicePath); Status = GetEnvironmentVariable ((CHAR16 *)L"Fdt", &gArmGlobalVariableGuid,
DefaultFdtDevicePath, &FdtDevicePathSize, (VOID **)&FdtDevicePath);
ASSERT_EFI_ERROR(Status); ASSERT_EFI_ERROR(Status);
Status = BdsBootLinuxFdt (BootOption->FilePathList, Status = BdsBootLinuxFdt (BootOption->FilePathList,
@ -120,7 +122,7 @@ BootOptionList (
InitializeListHead (BootOptionList); InitializeListHead (BootOptionList);
// Get the Boot Option Order from the environment variable // Get the Boot Option Order from the environment variable
Status = GetEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder); Status = GetGlobalEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder);
if (EFI_ERROR(Status)) { if (EFI_ERROR(Status)) {
return Status; return Status;
} }
@ -286,7 +288,7 @@ BootOptionCreate (
); );
// Add the new Boot Index to the list // Add the new Boot Index to the list
Status = GetEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder); Status = GetGlobalEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder);
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
BootOrder = ReallocatePool (BootOrderSize, BootOrderSize + sizeof(UINT16), BootOrder); BootOrder = ReallocatePool (BootOrderSize, BootOrderSize + sizeof(UINT16), BootOrder);
// Add the new index at the end // Add the new index at the end
@ -358,7 +360,7 @@ BootOptionDelete (
EFI_STATUS Status; EFI_STATUS Status;
// Remove the entry from the BootOrder environment variable // Remove the entry from the BootOrder environment variable
Status = GetEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder); Status = GetGlobalEnvironmentVariable (L"BootOrder", NULL, &BootOrderSize, (VOID**)&BootOrder);
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
BootOrderCount = BootOrderSize / sizeof(UINT16); BootOrderCount = BootOrderSize / sizeof(UINT16);

View File

@ -1,6 +1,6 @@
/** @file /** @file
* *
* Copyright (c) 2011, ARM Limited. All rights reserved. * Copyright (c) 2011-2013, ARM Limited. All rights reserved.
* *
* This program and the accompanying materials * This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License * are licensed and made available under the terms and conditions of the BSD License
@ -15,6 +15,9 @@
#ifndef __ARM_GLOBAL_VARIABLE_GUID_H__ #ifndef __ARM_GLOBAL_VARIABLE_GUID_H__
#define __ARM_GLOBAL_VARIABLE_GUID_H__ #define __ARM_GLOBAL_VARIABLE_GUID_H__
#include <Pi/PiBootMode.h>
#include <Pi/PiHob.h>
#define ARM_HOB_GLOBAL_VARIABLE_GUID \ #define ARM_HOB_GLOBAL_VARIABLE_GUID \
{ 0xc3253c90, 0xa24f, 0x4599, { 0xa6, 0x64, 0x1f, 0x88, 0x13, 0x77, 0x8f, 0xc9} }; { 0xc3253c90, 0xa24f, 0x4599, { 0xa6, 0x64, 0x1f, 0x88, 0x13, 0x77, 0x8f, 0xc9} };

View File

@ -1,6 +1,6 @@
/** @file /** @file
* *
* Copyright (c) 2011-2012, ARM Limited. All rights reserved. * Copyright (c) 2011-2013, ARM Limited. All rights reserved.
* *
* This program and the accompanying materials * This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License * are licensed and made available under the terms and conditions of the BSD License
@ -26,7 +26,7 @@
#include <Protocol/DevicePathFromText.h> #include <Protocol/DevicePathFromText.h>
#include <Guid/GlobalVariable.h> #include <Guid/ArmGlobalVariableHob.h>
#include <libfdt.h> #include <libfdt.h>
@ -187,7 +187,7 @@ EblDumpFdt (
// If no FDT file is passed to the argument then get the one from the platform // If no FDT file is passed to the argument then get the one from the platform
if (Argc < 2) { if (Argc < 2) {
Status = GetEnvironmentVariable (L"Fdt",NULL,NULL,(VOID**)&FdtDevicePath); Status = GetEnvironmentVariable (L"Fdt", &gArmGlobalVariableGuid, NULL, NULL, (VOID**)&FdtDevicePath);
if (Status == EFI_NOT_FOUND) { if (Status == EFI_NOT_FOUND) {
// No set yet, get the Default Device Path // No set yet, get the Default Device Path
Status = gBS->LocateProtocol (&gEfiDevicePathFromTextProtocolGuid, NULL, (VOID **)&EfiDevicePathFromTextProtocol); Status = gBS->LocateProtocol (&gEfiDevicePathFromTextProtocolGuid, NULL, (VOID **)&EfiDevicePathFromTextProtocol);