]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLib.c
IntelFrameworkPkg/FrameworkUefiLib: implement EfiEventGroupSignal
[mirror_edk2.git] / IntelFrameworkPkg / Library / FrameworkUefiLib / UefiLib.c
index 9f73fb52eda61aa218c08b67b9e846154b9ca3ae..e198b729a329b3517bbc3836a188403a97893de9 100644 (file)
@@ -282,6 +282,49 @@ EfiNamedEventSignal (
   return Status;\r
 }\r
 \r
+/**\r
+  Signals an event group by placing a new event in the group temporarily and\r
+  signaling it.\r
+\r
+  @param[in] EventGroup          Supplies the unique identifier of the event\r
+                                 group to signal.\r
+\r
+  @retval EFI_SUCCESS            The event group was signaled successfully.\r
+  @retval EFI_INVALID_PARAMETER  EventGroup is NULL.\r
+  @return                        Error codes that report problems about event\r
+                                 creation or signaling.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiEventGroupSignal (\r
+  IN CONST EFI_GUID *EventGroup\r
+  )\r
+{\r
+  EFI_STATUS Status;\r
+  EFI_EVENT  Event;\r
+\r
+  if (EventGroup == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  Status = gBS->CreateEventEx (\r
+                  EVT_NOTIFY_SIGNAL,\r
+                  TPL_CALLBACK,\r
+                  InternalEmptyFunction,\r
+                  NULL,\r
+                  EventGroup,\r
+                  &Event\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
+  Status = gBS->SignalEvent (Event);\r
+  gBS->CloseEvent (Event);\r
+\r
+  return Status;\r
+}\r
+\r
 /** \r
   Returns the current TPL.\r
 \r