Create the PlatformBootManagerProtocol that is used to add predefined boot options in platform driver. This interface will be used in ArmPkg/PlatformBootManagerLib. Cc: Laszlo Ersek <lersek@redhat.com> Cc: Leif Lindholm <leif.lindholm@linaro.org> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
		
			
				
	
	
		
			87 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| 
 | |
|   Copyright (c) 2018, Linaro. All rights reserved.<BR>
 | |
| 
 | |
|   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 __PLATFORM_BOOT_MANAGER_PROTOCOL_H__
 | |
| #define __PLATFORM_BOOT_MANAGER_PROTOCOL_H__
 | |
| 
 | |
| //
 | |
| // Protocol interface structure
 | |
| //
 | |
| typedef struct _PLATFORM_BOOT_MANAGER_PROTOCOL    PLATFORM_BOOT_MANAGER_PROTOCOL;
 | |
| 
 | |
| //
 | |
| // Function Prototypes
 | |
| //
 | |
| 
 | |
| /*
 | |
|   Get predefined boot options for platform.
 | |
| 
 | |
|   @param[out] Count            The number of elements in each of
 | |
|                                BootOptions and BootKeys. On successful
 | |
|                                return, Count is at least one.
 | |
| 
 | |
|   @param[out] BootOptions      An array of platform boot options.
 | |
|                                BootOptions is pool-allocated by
 | |
|                                GET_PLATFORM_BOOT_OPTIONS_AND_KEYS, and
 | |
|                                GET_PLATFORM_BOOT_OPTIONS_AND_KEYS populates
 | |
|                                every element in BootOptions with
 | |
|                                EfiBootManagerInitializeLoadOption().
 | |
|                                BootOptions shall not contain duplicate
 | |
|                                entries. The caller is responsible for
 | |
|                                releasing BootOptions after use with
 | |
|                                EfiBootManagerFreeLoadOptions().
 | |
| 
 | |
|   @param[out] BootKeys         A pool-allocated array of platform boot
 | |
|                                hotkeys. For every 0 <= Index < Count, if
 | |
|                                BootOptions[Index] is not to be associated
 | |
|                                with a hotkey, then BootKeys[Index] is
 | |
|                                zero-filled. Otherwise, BootKeys[Index]
 | |
|                                specifies the boot hotkey for
 | |
|                                BootOptions[Index]. BootKeys shall not
 | |
|                                contain duplicate entries (other than
 | |
|                                zero-filled entries). The caller is
 | |
|                                responsible for releasing BootKeys with
 | |
|                                FreePool() after use.
 | |
| 
 | |
|   @retval EFI_SUCCESS          Count, BootOptions and BootKeys have
 | |
|                                been set.
 | |
| 
 | |
|   @retval EFI_OUT_OF_RESOURCES Memory allocation failed.
 | |
| 
 | |
|   @retval EFI_UNSUPPORTED      The platform doesn't provide boot options
 | |
|                                as a feature.
 | |
| 
 | |
|   @retval EFI_NOT_FOUND        The platform could provide boot options
 | |
|                                as a feature, but none have been
 | |
|                                configured.
 | |
| 
 | |
|   @return                      Error codes propagated from underlying
 | |
|                                functions.
 | |
| */
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *GET_PLATFORM_BOOT_OPTIONS_AND_KEYS) (
 | |
|   OUT UINTN                              *Count,
 | |
|   OUT EFI_BOOT_MANAGER_LOAD_OPTION       **BootOptions,
 | |
|   OUT EFI_INPUT_KEY                      **BootKeys
 | |
|   );
 | |
| 
 | |
| struct _PLATFORM_BOOT_MANAGER_PROTOCOL {
 | |
|   GET_PLATFORM_BOOT_OPTIONS_AND_KEYS     GetPlatformBootOptionsAndKeys;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gPlatformBootManagerProtocolGuid;
 | |
| 
 | |
| #endif /* __PLATFORM_BOOT_MANAGER_PROTOCOL_H__ */
 |