]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Include/Library/CapsuleLib.h
MdeModulePkg: Clean up source files
[mirror_edk2.git] / MdeModulePkg / Include / Library / CapsuleLib.h
index 662e4def951c2653a5939d9ddef00ff187507b3a..376cb39d387cb754b0e695a0f2b7b1867c91a0a6 100644 (file)
@@ -1,15 +1,15 @@
 /** @file\r
 \r
-  This library class defines a set of interfaces on how to process capusle image update.\r
+  This library class defines a set of interfaces for how to process capsule image updates.\r
 \r
-  Copyright (c) 2007 - 2008, Intel Corporation\r
-  All rights reserved. This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-  \r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under\r
+the terms and conditions of the BSD License that accompanies this distribution.\r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php.\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 **/\r
 \r
 #define __CAPSULE_LIB_H__\r
 \r
 /**\r
-  The firmware checks whether the capsule image is supported \r
-  by the CapsuleGuid in CapsuleHeader or other specific information in capsule image.\r
-  \r
-  @param  CapsuleHeader    Point to the UEFI capsule image to be checked.\r
-  \r
+  The firmware checks whether the capsule image is supported\r
+  by the CapsuleGuid in CapsuleHeader or if there is other specific information in\r
+  the capsule image.\r
+\r
+  Caution: This function may receive untrusted input.\r
+\r
+  @param  CapsuleHeader    Pointer to the UEFI capsule image to be checked.\r
+\r
   @retval EFI_SUCESS       Input capsule is supported by firmware.\r
   @retval EFI_UNSUPPORTED  Input capsule is not supported by the firmware.\r
 **/\r
@@ -32,12 +35,14 @@ SupportCapsuleImage (
   );\r
 \r
 /**\r
-  The firmware specific implementation processes the capsule image\r
+  The firmware-specific implementation processes the capsule image\r
   if it recognized the format of this capsule image.\r
-  \r
-  @param  CapsuleHeader    Point to the UEFI capsule image to be processed. \r
-   \r
-  @retval EFI_SUCESS       Process Capsule Image successfully. \r
+\r
+  Caution: This function may receive untrusted input.\r
+\r
+  @param  CapsuleHeader    Pointer to the UEFI capsule image to be processed.\r
+\r
+  @retval EFI_SUCESS       Capsule Image processed successfully.\r
   @retval EFI_UNSUPPORTED  Capsule image is not supported by the firmware.\r
 **/\r
 EFI_STATUS\r
@@ -46,4 +51,40 @@ ProcessCapsuleImage (
   IN EFI_CAPSULE_HEADER *CapsuleHeader\r
   );\r
 \r
+/**\r
+\r
+  This routine is called to process capsules.\r
+\r
+  Caution: This function may receive untrusted input.\r
+\r
+  The capsules reported in EFI_HOB_UEFI_CAPSULE are processed.\r
+  If there is no EFI_HOB_UEFI_CAPSULE, this routine does nothing.\r
+\r
+  This routine should be called twice in BDS.\r
+  1) The first call must be before EndOfDxe. The system capsules is processed.\r
+     If device capsule FMP protocols are exposted at this time and device FMP\r
+     capsule has zero EmbeddedDriverCount, the device capsules are processed.\r
+     Each individual capsule result is recorded in capsule record variable.\r
+     System may reset in this function, if reset is required by capsule and\r
+     all capsules are processed.\r
+     If not all capsules are processed, reset will be defered to second call.\r
+\r
+  2) The second call must be after EndOfDxe and after ConnectAll, so that all\r
+     device capsule FMP protocols are exposed.\r
+     The system capsules are skipped. If the device capsules are NOT processed\r
+     in first call, they are processed here.\r
+     Each individual capsule result is recorded in capsule record variable.\r
+     System may reset in this function, if reset is required by capsule\r
+     processed in first call and second call.\r
+\r
+  @retval EFI_SUCCESS             There is no error when processing capsules.\r
+  @retval EFI_OUT_OF_RESOURCES    No enough resource to process capsules.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ProcessCapsules (\r
+  VOID\r
+  );\r
+\r
 #endif\r