]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/UefiLib/UefiLib.c
MdePkg/UefiLib: introduce EfiEventGroupSignal
[mirror_edk2.git] / MdePkg / Library / UefiLib / UefiLib.c
index ba3acc1af228e55a16b85c657fa58a4c2b27d6ef..96d375fb6f2e08f5adb8778dc0fd2658928da15e 100644 (file)
@@ -304,6 +304,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