mirror of https://github.com/acidanthera/audk.git
MdeModulePkg: document workaround for EFI_RUNTIME_EVENT_ENTRY PI spec bug
The PI spec (v1.7) correctly specifies "EFI_RUNTIME_EVENT_ENTRY.Event" in natural language, but the field type in the structure definition itself is wrong -- it should be EFI_EVENT, not (EFI_EVENT*). This spec bug is likely unfixable for compatibility reasons, and so edk2 works it around already. We should clearly document the workaround. Functionally, this patch is a no-op. (I've also requested a non-normative (informative) clarification for the PI spec: <https://mantis.uefi.org/mantis/view.php?id=2017>.) Cc: Dandan Bi <dandan.bi@intel.com> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Liming Gao <liming.gao@intel.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
parent
0bee7dbd2b
commit
d342d318e9
|
@ -485,6 +485,14 @@ CoreCreateEventInternal (
|
|||
IEvent->RuntimeData.NotifyTpl = NotifyTpl;
|
||||
IEvent->RuntimeData.NotifyFunction = NotifyFunction;
|
||||
IEvent->RuntimeData.NotifyContext = (VOID *) NotifyContext;
|
||||
//
|
||||
// Work around the bug in the Platform Init specification (v1.7), reported
|
||||
// as Mantis#2017: "EFI_RUNTIME_EVENT_ENTRY.Event" should have type
|
||||
// EFI_EVENT, not (EFI_EVENT*). The PI spec documents the field correctly
|
||||
// as "The EFI_EVENT returned by CreateEvent()", but the type of the field
|
||||
// doesn't match the natural language description. Therefore we need an
|
||||
// explicit cast here.
|
||||
//
|
||||
IEvent->RuntimeData.Event = (EFI_EVENT *) IEvent;
|
||||
InsertTailList (&gRuntime->EventHead, &IEvent->RuntimeData.Link);
|
||||
}
|
||||
|
|
|
@ -285,8 +285,16 @@ RuntimeDriverSetVirtualAddressMap (
|
|||
for (Link = mRuntime.EventHead.ForwardLink; Link != &mRuntime.EventHead; Link = Link->ForwardLink) {
|
||||
RuntimeEvent = BASE_CR (Link, EFI_RUNTIME_EVENT_ENTRY, Link);
|
||||
if ((RuntimeEvent->Type & EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE) == EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE) {
|
||||
//
|
||||
// Work around the bug in the Platform Init specification (v1.7),
|
||||
// reported as Mantis#2017: "EFI_RUNTIME_EVENT_ENTRY.Event" should have
|
||||
// type EFI_EVENT, not (EFI_EVENT*). The PI spec documents the field
|
||||
// correctly as "The EFI_EVENT returned by CreateEvent()", but the type
|
||||
// of the field doesn't match the natural language description. Therefore
|
||||
// we need an explicit cast here.
|
||||
//
|
||||
RuntimeEvent->NotifyFunction (
|
||||
RuntimeEvent->Event,
|
||||
(EFI_EVENT) RuntimeEvent->Event,
|
||||
RuntimeEvent->NotifyContext
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue