2011-06-11 13:56:30 +02:00
|
|
|
/** @file
|
|
|
|
*
|
2015-05-05 16:58:57 +02:00
|
|
|
* Copyright (c) 2013-2015, ARM Limited. All rights reserved.
|
2011-06-11 13:56:30 +02:00
|
|
|
*
|
2013-03-12 01:42:59 +01:00
|
|
|
* This program and the accompanying materials
|
|
|
|
* are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
* which accompanies this distribution. The full text of the license may be found at
|
|
|
|
* http://opensource.org/licenses/bsd-license.php
|
|
|
|
*
|
|
|
|
* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
2011-06-11 13:56:30 +02:00
|
|
|
*
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef __BDS_ENTRY_H__
|
|
|
|
#define __BDS_ENTRY_H__
|
|
|
|
|
2017-08-01 11:28:58 +02:00
|
|
|
#define IS_DEVICE_PATH_NODE(node,type,subtype) \
|
|
|
|
(((node)->Type == (type)) && ((node)->SubType == (subtype)))
|
|
|
|
|
2011-09-09 12:52:31 +02:00
|
|
|
/**
|
|
|
|
This is defined by the UEFI specs, don't change it
|
|
|
|
**/
|
|
|
|
typedef struct {
|
|
|
|
UINT16 LoadOptionIndex;
|
2015-05-11 19:37:24 +02:00
|
|
|
EFI_LOAD_OPTION *LoadOption;
|
2011-09-09 12:52:31 +02:00
|
|
|
UINTN LoadOptionSize;
|
|
|
|
|
|
|
|
UINT32 Attributes;
|
|
|
|
UINT16 FilePathListLength;
|
|
|
|
CHAR16 *Description;
|
|
|
|
EFI_DEVICE_PATH_PROTOCOL *FilePathList;
|
|
|
|
|
|
|
|
VOID* OptionalData;
|
|
|
|
UINTN OptionalDataSize;
|
|
|
|
} BDS_LOAD_OPTION;
|
|
|
|
|
2011-06-15 21:56:50 +02:00
|
|
|
/**
|
|
|
|
Connect a Device Path and return the handle of the driver that support this DevicePath
|
|
|
|
|
|
|
|
@param DevicePath Device Path of the File to connect
|
|
|
|
@param Handle Handle of the driver that support this DevicePath
|
|
|
|
@param RemainingDevicePath Remaining DevicePath nodes that do not match the driver DevicePath
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS A driver that matches the Device Path has been found
|
|
|
|
@retval EFI_NOT_FOUND No handles match the search.
|
|
|
|
@retval EFI_INVALID_PARAMETER DevicePath or Handle is NULL
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
BdsConnectDevicePath (
|
|
|
|
IN EFI_DEVICE_PATH_PROTOCOL* DevicePath,
|
|
|
|
OUT EFI_HANDLE *Handle,
|
|
|
|
OUT EFI_DEVICE_PATH_PROTOCOL **RemainingDevicePath
|
|
|
|
);
|
|
|
|
|
2011-06-11 13:56:30 +02:00
|
|
|
/**
|
|
|
|
Connect all DXE drivers
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS All drivers have been connected
|
|
|
|
@retval EFI_NOT_FOUND No handles match the search.
|
|
|
|
@retval EFI_OUT_OF_RESOURCES There is not resource pool memory to store the matching results.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
BdsConnectAllDrivers (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
2014-04-02 19:32:29 +02:00
|
|
|
/**
|
|
|
|
Return the value of a global variable defined by its VariableName.
|
|
|
|
The variable must be defined with the VendorGuid gEfiGlobalVariableGuid.
|
|
|
|
|
|
|
|
@param VariableName A Null-terminated string that is the name of the vendor's
|
|
|
|
variable.
|
|
|
|
@param DefaultValue Value returned by the function if the variable does not exist
|
|
|
|
@param DataSize On input, the size in bytes of the return Data buffer.
|
|
|
|
On output the size of data returned in Data.
|
|
|
|
@param Value Value read from the UEFI Variable or copy of the default value
|
|
|
|
if the UEFI Variable does not exist
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS All drivers have been connected
|
|
|
|
@retval EFI_NOT_FOUND No handles match the search.
|
|
|
|
@retval EFI_OUT_OF_RESOURCES There is not resource pool memory to store the matching results.
|
|
|
|
|
|
|
|
**/
|
2013-03-12 01:42:59 +01:00
|
|
|
EFI_STATUS
|
|
|
|
GetGlobalEnvironmentVariable (
|
|
|
|
IN CONST CHAR16* VariableName,
|
|
|
|
IN VOID* DefaultValue,
|
|
|
|
IN OUT UINTN* Size,
|
|
|
|
OUT VOID** Value
|
|
|
|
);
|
|
|
|
|
2014-04-02 19:32:29 +02:00
|
|
|
/**
|
|
|
|
Return the value of the variable defined by its VariableName and VendorGuid
|
|
|
|
|
|
|
|
@param VariableName A Null-terminated string that is the name of the vendor's
|
|
|
|
variable.
|
|
|
|
@param VendorGuid A unique identifier for the vendor.
|
|
|
|
@param DefaultValue Value returned by the function if the variable does not exist
|
|
|
|
@param DataSize On input, the size in bytes of the return Data buffer.
|
|
|
|
On output the size of data returned in Data.
|
|
|
|
@param Value Value read from the UEFI Variable or copy of the default value
|
|
|
|
if the UEFI Variable does not exist
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS All drivers have been connected
|
|
|
|
@retval EFI_NOT_FOUND No handles match the search.
|
|
|
|
@retval EFI_OUT_OF_RESOURCES There is not resource pool memory to store the matching results.
|
|
|
|
|
|
|
|
**/
|
2011-09-09 12:54:33 +02:00
|
|
|
EFI_STATUS
|
|
|
|
GetEnvironmentVariable (
|
|
|
|
IN CONST CHAR16* VariableName,
|
2013-03-12 01:42:59 +01:00
|
|
|
IN EFI_GUID* VendorGuid,
|
2011-09-09 12:54:33 +02:00
|
|
|
IN VOID* DefaultValue,
|
|
|
|
IN OUT UINTN* Size,
|
|
|
|
OUT VOID** Value
|
|
|
|
);
|
|
|
|
|
|
|
|
EFI_STATUS
|
|
|
|
BootOptionFromLoadOptionIndex (
|
|
|
|
IN UINT16 LoadOptionIndex,
|
|
|
|
OUT BDS_LOAD_OPTION** BdsLoadOption
|
|
|
|
);
|
|
|
|
|
|
|
|
EFI_STATUS
|
|
|
|
BootOptionFromLoadOptionVariable (
|
|
|
|
IN CHAR16* BootVariableName,
|
|
|
|
OUT BDS_LOAD_OPTION** BdsLoadOption
|
|
|
|
);
|
|
|
|
|
|
|
|
EFI_STATUS
|
|
|
|
BootOptionToLoadOptionVariable (
|
|
|
|
IN BDS_LOAD_OPTION* BdsLoadOption
|
|
|
|
);
|
|
|
|
|
|
|
|
UINT16
|
|
|
|
BootOptionAllocateBootIndex (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
2011-06-15 21:56:50 +02:00
|
|
|
/**
|
|
|
|
Start an EFI Application from a Device Path
|
|
|
|
|
|
|
|
@param ParentImageHandle Handle of the calling image
|
|
|
|
@param DevicePath Location of the EFI Application
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS All drivers have been connected
|
|
|
|
@retval EFI_NOT_FOUND The Linux kernel Device Path has not been found
|
|
|
|
@retval EFI_OUT_OF_RESOURCES There is not enough resource memory to store the matching results.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
BdsStartEfiApplication (
|
|
|
|
IN EFI_HANDLE ParentImageHandle,
|
2011-09-09 12:53:42 +02:00
|
|
|
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
|
|
|
IN UINTN LoadOptionsSize,
|
|
|
|
IN VOID* LoadOptions
|
2011-06-15 21:56:50 +02:00
|
|
|
);
|
|
|
|
|
2011-09-09 12:54:33 +02:00
|
|
|
EFI_STATUS
|
|
|
|
BdsLoadImage (
|
|
|
|
IN EFI_DEVICE_PATH *DevicePath,
|
|
|
|
IN EFI_ALLOCATE_TYPE Type,
|
|
|
|
IN OUT EFI_PHYSICAL_ADDRESS* Image,
|
|
|
|
OUT UINTN *FileSize
|
|
|
|
);
|
|
|
|
|
2015-05-05 16:58:57 +02:00
|
|
|
/**
|
|
|
|
* Call BS.ExitBootServices with the appropriate Memory Map information
|
|
|
|
*/
|
|
|
|
EFI_STATUS
|
|
|
|
ShutdownUefiBootServices (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
2015-07-14 16:30:08 +02:00
|
|
|
/**
|
|
|
|
Locate an EFI application in a the Firmware Volumes by its name
|
|
|
|
|
|
|
|
@param EfiAppGuid Guid of the EFI Application into the Firmware Volume
|
|
|
|
@param DevicePath EFI Device Path of the EFI application
|
|
|
|
|
|
|
|
@return EFI_SUCCESS The function completed successfully.
|
|
|
|
@return EFI_NOT_FOUND The protocol could not be located.
|
|
|
|
@return EFI_OUT_OF_RESOURCES There are not enough resources to find the protocol.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
LocateEfiApplicationInFvByName (
|
|
|
|
IN CONST CHAR16* EfiAppName,
|
|
|
|
OUT EFI_DEVICE_PATH **DevicePath
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Locate an EFI application in a the Firmware Volumes by its GUID
|
|
|
|
|
|
|
|
@param EfiAppGuid Guid of the EFI Application into the Firmware Volume
|
|
|
|
@param DevicePath EFI Device Path of the EFI application
|
|
|
|
|
|
|
|
@return EFI_SUCCESS The function completed successfully.
|
|
|
|
@return EFI_NOT_FOUND The protocol could not be located.
|
|
|
|
@return EFI_OUT_OF_RESOURCES There are not enough resources to find the protocol.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
LocateEfiApplicationInFvByGuid (
|
|
|
|
IN CONST EFI_GUID *EfiAppGuid,
|
|
|
|
OUT EFI_DEVICE_PATH **DevicePath
|
|
|
|
);
|
|
|
|
|
2011-06-11 13:56:30 +02:00
|
|
|
#endif
|