MdePkg/UefiLib: introduce EfiEventGroupSignal

This is a small convenience function that eases signaling an event group
(identified by GUID). An example where it can be used is Platform BDS
signaling the End-of-DXE event group.

The naming follows EfiNamedEventSignal().

The patch modifies the library class header, and updates the most commonly
used library instance at once. Other library instances in the edk2 tree
will be adapted in the following patches.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Suggested-by: Jordan Justen <jordan.l.justen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Laszlo Ersek 2016-03-22 17:07:14 +01:00
parent ca8f50e88e
commit 772fb7cb13
2 changed files with 61 additions and 0 deletions

View File

@ -223,6 +223,24 @@ EfiNamedEventSignal (
IN CONST EFI_GUID *Name
);
/**
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
);
/**
Returns the current TPL.

View File

@ -304,6 +304,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.