Move IS_DEVICE_PATH_NODE into header to share it. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jun Nie <jun.nie@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
		
			
				
	
	
		
			213 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
*
 | 
						|
*  Copyright (c) 2013-2015, ARM Limited. All rights reserved.
 | 
						|
*
 | 
						|
*  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.
 | 
						|
*
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __BDS_ENTRY_H__
 | 
						|
#define __BDS_ENTRY_H__
 | 
						|
 | 
						|
#define IS_DEVICE_PATH_NODE(node,type,subtype)    \
 | 
						|
        (((node)->Type == (type)) && ((node)->SubType == (subtype)))
 | 
						|
 | 
						|
/**
 | 
						|
  This is defined by the UEFI specs, don't change it
 | 
						|
**/
 | 
						|
typedef struct {
 | 
						|
  UINT16                      LoadOptionIndex;
 | 
						|
  EFI_LOAD_OPTION             *LoadOption;
 | 
						|
  UINTN                       LoadOptionSize;
 | 
						|
 | 
						|
  UINT32                      Attributes;
 | 
						|
  UINT16                      FilePathListLength;
 | 
						|
  CHAR16                      *Description;
 | 
						|
  EFI_DEVICE_PATH_PROTOCOL    *FilePathList;
 | 
						|
 | 
						|
  VOID*                       OptionalData;
 | 
						|
  UINTN                       OptionalDataSize;
 | 
						|
} BDS_LOAD_OPTION;
 | 
						|
 | 
						|
/**
 | 
						|
  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
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  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
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  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.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
GetGlobalEnvironmentVariable (
 | 
						|
  IN     CONST CHAR16*   VariableName,
 | 
						|
  IN     VOID*           DefaultValue,
 | 
						|
  IN OUT UINTN*          Size,
 | 
						|
  OUT    VOID**          Value
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  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.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
GetEnvironmentVariable (
 | 
						|
  IN     CONST CHAR16*   VariableName,
 | 
						|
  IN     EFI_GUID*       VendorGuid,
 | 
						|
  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
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  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,
 | 
						|
  IN EFI_DEVICE_PATH_PROTOCOL    *DevicePath,
 | 
						|
  IN UINTN                       LoadOptionsSize,
 | 
						|
  IN VOID*                       LoadOptions
 | 
						|
  );
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
BdsLoadImage (
 | 
						|
  IN     EFI_DEVICE_PATH       *DevicePath,
 | 
						|
  IN     EFI_ALLOCATE_TYPE     Type,
 | 
						|
  IN OUT EFI_PHYSICAL_ADDRESS* Image,
 | 
						|
  OUT    UINTN                 *FileSize
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 * Call BS.ExitBootServices with the appropriate Memory Map information
 | 
						|
 */
 | 
						|
EFI_STATUS
 | 
						|
ShutdownUefiBootServices (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  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
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |