REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the ArmPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Andrew Fish <afish@apple.com>
		
			
				
	
	
		
			188 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Implementation for PlatformBootManagerLib library class interfaces.
 | |
| 
 | |
|   Copyright (C) 2015-2016, Red Hat, Inc.
 | |
|   Copyright (c) 2014 - 2019, ARM Ltd. All rights reserved.<BR>
 | |
|   Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
|   Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
 | |
|   Copyright (c) 2020 - 2021, Ampere Computing LLC. All rights reserved.<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #include <Uefi.h>
 | |
| 
 | |
| #include <Guid/EventGroup.h>
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/BaseMemoryLib.h>
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/DevicePathLib.h>
 | |
| #include <Library/MemoryAllocationLib.h>
 | |
| #include <Library/PcdLib.h>
 | |
| #include <Library/UefiBootManagerLib.h>
 | |
| #include <Library/UefiBootServicesTableLib.h>
 | |
| #include <Library/UefiLib.h>
 | |
| #include <Library/UefiRuntimeServicesTableLib.h>
 | |
| #include <Protocol/LoadedImage.h>
 | |
| #include <Protocol/PlatformBootManager.h>
 | |
| 
 | |
| /**
 | |
|   Register a boot option using a file GUID in the FV.
 | |
| 
 | |
|   @param  FileGuid     The file GUID name in the FV.
 | |
|   @param  Description  The description of the boot option.
 | |
|   @param  Attributes   The attributes of the boot option.
 | |
| 
 | |
| **/
 | |
| STATIC
 | |
| VOID
 | |
| PlatformRegisterFvBootOption (
 | |
|   CONST EFI_GUID  *FileGuid,
 | |
|   CHAR16          *Description,
 | |
|   UINT32          Attributes
 | |
|   )
 | |
| {
 | |
|   EFI_STATUS                         Status;
 | |
|   INTN                               OptionIndex;
 | |
|   EFI_BOOT_MANAGER_LOAD_OPTION       NewOption;
 | |
|   EFI_BOOT_MANAGER_LOAD_OPTION       *BootOptions;
 | |
|   UINTN                              BootOptionCount;
 | |
|   MEDIA_FW_VOL_FILEPATH_DEVICE_PATH  FileNode;
 | |
|   EFI_LOADED_IMAGE_PROTOCOL          *LoadedImage;
 | |
|   EFI_DEVICE_PATH_PROTOCOL           *DevicePath;
 | |
| 
 | |
|   Status = gBS->HandleProtocol (
 | |
|                   gImageHandle,
 | |
|                   &gEfiLoadedImageProtocolGuid,
 | |
|                   (VOID **)&LoadedImage
 | |
|                   );
 | |
|   ASSERT_EFI_ERROR (Status);
 | |
| 
 | |
|   EfiInitializeFwVolDevicepathNode (&FileNode, FileGuid);
 | |
|   DevicePath = DevicePathFromHandle (LoadedImage->DeviceHandle);
 | |
|   ASSERT (DevicePath != NULL);
 | |
|   DevicePath = AppendDevicePathNode (
 | |
|                  DevicePath,
 | |
|                  (EFI_DEVICE_PATH_PROTOCOL *)&FileNode
 | |
|                  );
 | |
|   ASSERT (DevicePath != NULL);
 | |
| 
 | |
|   Status = EfiBootManagerInitializeLoadOption (
 | |
|              &NewOption,
 | |
|              LoadOptionNumberUnassigned,
 | |
|              LoadOptionTypeBoot,
 | |
|              Attributes,
 | |
|              Description,
 | |
|              DevicePath,
 | |
|              NULL,
 | |
|              0
 | |
|              );
 | |
|   ASSERT_EFI_ERROR (Status);
 | |
|   FreePool (DevicePath);
 | |
| 
 | |
|   BootOptions = EfiBootManagerGetLoadOptions (
 | |
|                   &BootOptionCount,
 | |
|                   LoadOptionTypeBoot
 | |
|                   );
 | |
| 
 | |
|   OptionIndex = EfiBootManagerFindLoadOption (
 | |
|                   &NewOption,
 | |
|                   BootOptions,
 | |
|                   BootOptionCount
 | |
|                   );
 | |
| 
 | |
|   if (OptionIndex == -1) {
 | |
|     Status = EfiBootManagerAddLoadOptionVariable (&NewOption, MAX_UINTN);
 | |
|     ASSERT_EFI_ERROR (Status);
 | |
|   }
 | |
| 
 | |
|   EfiBootManagerFreeLoadOption (&NewOption);
 | |
|   EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Do the platform specific action before the console is connected.
 | |
| 
 | |
|   Such as:
 | |
|     Update console variable;
 | |
|     Register new Driver#### or Boot####;
 | |
|     Signal ReadyToLock event.
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| PlatformBootManagerBeforeConsole (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   //
 | |
|   // Signal EndOfDxe PI Event
 | |
|   //
 | |
|   EfiEventGroupSignal (&gEfiEndOfDxeEventGroupGuid);
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Do the platform specific action after the console is connected.
 | |
| 
 | |
|   Such as:
 | |
|     Dynamically switch output mode;
 | |
|     Signal console ready platform customized event;
 | |
|     Run diagnostics like memory testing;
 | |
|     Connect certain devices;
 | |
|     Dispatch additional option roms.
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| PlatformBootManagerAfterConsole (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   EFI_GUID  LinuxBootFileGuid;
 | |
| 
 | |
|   CopyGuid (&LinuxBootFileGuid, PcdGetPtr (PcdLinuxBootFileGuid));
 | |
| 
 | |
|   if (!CompareGuid (&LinuxBootFileGuid, &gZeroGuid)) {
 | |
|     //
 | |
|     // Register LinuxBoot
 | |
|     //
 | |
|     PlatformRegisterFvBootOption (
 | |
|       &LinuxBootFileGuid,
 | |
|       L"LinuxBoot",
 | |
|       LOAD_OPTION_ACTIVE
 | |
|       );
 | |
|   } else {
 | |
|     DEBUG ((DEBUG_ERROR, "%a: PcdLinuxBootFileGuid was not set!\n", __FUNCTION__));
 | |
|   }
 | |
| }
 | |
| 
 | |
| /**
 | |
|   This function is called each second during the boot manager waits the
 | |
|   timeout.
 | |
| 
 | |
|   @param TimeoutRemain  The remaining timeout.
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| PlatformBootManagerWaitCallback (
 | |
|   UINT16  TimeoutRemain
 | |
|   )
 | |
| {
 | |
|   return;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   The function is called when no boot option could be launched,
 | |
|   including platform recovery options and options pointing to applications
 | |
|   built into firmware volumes.
 | |
| 
 | |
|   If this function returns, BDS attempts to enter an infinite loop.
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| PlatformBootManagerUnableToBoot (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   return;
 | |
| }
 |