/** @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
);\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
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