| /** @file | |
| EFI Delayed Dispatch PPI as defined in the PI 1.7 Specification | |
| Provide timed event service in PEI | |
| Copyright (c) 2020, American Megatrends International LLC. All rights reserved. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef __DELAYED_DISPATCH_PPI_H__ | |
| #define __DELAYED_DISPATCH_PPI_H__ | |
| /// | |
| /// Global ID for EFI_DELAYED_DISPATCH_PPI_GUID | |
| /// | |
| #define EFI_DELAYED_DISPATCH_PPI_GUID \ | |
| { \ | |
| 0x869c711d, 0x649c, 0x44fe, { 0x8b, 0x9e, 0x2c, 0xbb, 0x29, 0x11, 0xc3, 0xe6} } \ | |
| } | |
| /** | |
| Delayed Dispatch function. This routine is called sometime after the required | |
| delay. Upon return, if NewDelay is 0, the function is unregistered. If NewDelay | |
| is not zero, this routine will be called again after the new delay period. | |
| @param[in,out] Context Pointer to Context. Can be updated by routine. | |
| @param[out] NewDelay The new delay in us. Leave at 0 to unregister callback. | |
| **/ | |
| typedef | |
| VOID | |
| (EFIAPI *EFI_DELAYED_DISPATCH_FUNCTION)( | |
| IN OUT UINT64 *Context, | |
| OUT UINT32 *NewDelay | |
| ); | |
| /// | |
| /// The forward declaration for EFI_DELAYED_DISPATCH_PPI | |
| /// | |
| typedef struct _EFI_DELAYED_DISPATCH_PPI EFI_DELAYED_DISPATCH_PPI; | |
| /** | |
| Register a callback to be called after a minimum delay has occurred. | |
| This service is the single member function of the EFI_DELAYED_DISPATCH_PPI | |
| @param This Pointer to the EFI_DELAYED_DISPATCH_PPI instance | |
| @param Function Function to call back | |
| @param Context Context data | |
| @param Delay Delay interval | |
| @retval EFI_SUCCESS Function successfully loaded | |
| @retval EFI_INVALID_PARAMETER One of the Arguments is not supported | |
| @retval EFI_OUT_OF_RESOURCES No more entries | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_DELAYED_DISPATCH_REGISTER)( | |
| IN EFI_DELAYED_DISPATCH_PPI *This, | |
| IN EFI_DELAYED_DISPATCH_FUNCTION Function, | |
| IN UINT64 Context, | |
| OUT UINT32 Delay | |
| ); | |
| /// | |
| /// This PPI is a pointer to the Delayed Dispatch Service. | |
| /// This service will be published by the Pei Foundation. The PEI Foundation | |
| /// will use this service to relaunch a known function that requests a delayed | |
| /// execution. | |
| /// | |
| struct _EFI_DELAYED_DISPATCH_PPI { | |
| EFI_DELAYED_DISPATCH_REGISTER Register; | |
| }; | |
| extern EFI_GUID gEfiPeiDelayedDispatchPpiGuid; | |
| #endif |