summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c
index 9f73fb52ed..e198b729a3 100644
--- a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c
+++ b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c
@@ -282,6 +282,49 @@ EfiNamedEventSignal (
return Status;
}
+/**
+ Signals an event group by placing a new event in the group temporarily and
+ signaling it.
+
+ @param[in] EventGroup Supplies the unique identifier of the event
+ group to signal.
+
+ @retval EFI_SUCCESS The event group was signaled successfully.
+ @retval EFI_INVALID_PARAMETER EventGroup is NULL.
+ @return Error codes that report problems about event
+ creation or signaling.
+**/
+EFI_STATUS
+EFIAPI
+EfiEventGroupSignal (
+ IN CONST EFI_GUID *EventGroup
+ )
+{
+ EFI_STATUS Status;
+ EFI_EVENT Event;
+
+ if (EventGroup == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ Status = gBS->CreateEventEx (
+ EVT_NOTIFY_SIGNAL,
+ TPL_CALLBACK,
+ InternalEmptyFunction,
+ NULL,
+ EventGroup,
+ &Event
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = gBS->SignalEvent (Event);
+ gBS->CloseEvent (Event);
+
+ return Status;
+}
+
/**
Returns the current TPL.