REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496

This change adds a new interface for the delayed dispatch PPI. This
new addition allows functional components relying on delayed dispatch
callbacks to be managed/dispatched with definitive order.

The full defintion has been added into PI spec.

Cc: Michael D Kinney <michael.d.kin...@intel.com>
Cc: Liming Gao <gaolim...@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang....@intel.com>

Co-authored-by: Mike Turner <mik...@pobox.com>
Signed-off-by: Kun Qin <kuqi...@gmail.com>
---

Notes:
    v2:
    - Fixed PI spec version number to v1.8 [Liming]

 MdePkg/Include/Ppi/DelayedDispatch.h | 26 ++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/MdePkg/Include/Ppi/DelayedDispatch.h 
b/MdePkg/Include/Ppi/DelayedDispatch.h
index 098d57758551..0efcfdbfced6 100644
--- a/MdePkg/Include/Ppi/DelayedDispatch.h
+++ b/MdePkg/Include/Ppi/DelayedDispatch.h
@@ -1,5 +1,5 @@
 /** @file
-    EFI Delayed Dispatch PPI as defined in the PI 1.7 Specification
+    EFI Delayed Dispatch PPI as defined in the PI 1.8 Specification
 
     Provide timed event service in PEI
 
@@ -50,6 +50,7 @@ This service is the single member function of the 
EFI_DELAYED_DISPATCH_PPI
   @param[in] This           Pointer to the EFI_DELAYED_DISPATCH_PPI instance
   @param[in] Function       Function to call back
   @param[in] Context        Context data
+  @param[in] UniqueId       GUID for this Delayed Dispatch request.
   @param[in] Delay          Delay interval
 
   @retval EFI_SUCCESS               Function successfully loaded
@@ -63,9 +64,29 @@ EFI_STATUS
   IN  EFI_DELAYED_DISPATCH_PPI      *This,
   IN  EFI_DELAYED_DISPATCH_FUNCTION  Function,
   IN  UINT64                         Context,
+  IN  EFI_GUID                      *UniqueId   OPTIONAL,
   IN  UINT32                         Delay
   );
 
+/**
+  Wait on a registered Delayed Dispatch unit that has a UniqueId.  Continue
+  to dispatch all registered delayed dispatch entries until *ALL* entries with
+  UniqueId have completed.
+
+  @param[in]     This            The Delayed Dispatch PPI pointer.
+  @param[in]     UniqueId        UniqueId of delayed dispatch entry.
+
+  @retval EFI_SUCCESS            The operation succeeds.
+  @retval EFI_INVALID_PARAMETER  The parameters are invalid.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_DELAYED_DISPATCH_WAIT_ON_EVENT)(
+  IN  EFI_DELAYED_DISPATCH_PPI      *This,
+  IN  EFI_GUID                      *UniqueId
+  );
+
 ///
 /// This PPI is a pointer to the Delayed Dispatch Service.
 /// This service will be published by the Pei Foundation. The PEI Foundation
@@ -73,7 +94,8 @@ EFI_STATUS
 /// execution.
 ///
 struct _EFI_DELAYED_DISPATCH_PPI {
-  EFI_DELAYED_DISPATCH_REGISTER    Register;
+  EFI_DELAYED_DISPATCH_REGISTER         Register;
+  EFI_DELAYED_DISPATCH_WAIT_ON_EVENT    WaitOnEvent;
 };
 
 extern EFI_GUID  gEfiPeiDelayedDispatchPpiGuid;
-- 
2.42.0.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#109468): https://edk2.groups.io/g/devel/message/109468
Mute This Topic: https://groups.io/mt/101865809/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to