\r
**/\r
\r
-\r
+/**\r
+ An empty function to pass error checking of CreateEventEx (). \r
+ \r
+ This empty function enusres that EFI_EVENT_NOTIFY_SIGNAL_ALL is error
+ checked correctly since it is now mapped into CreateEventEx() in UEFI 2.0.
+ \r
+**/\r
+VOID
+InternalEmptyFuntion (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+{
+ return;
+}\r
\r
/**\r
Create a Legacy Boot Event. \r
EFI_STATUS\r
EFIAPI\r
EfiCreateEventLegacyBoot (\r
- OUT EFI_EVENT *LegacyBootEvent\r
+ OUT EFI_EVENT *LegacyBootEvent\r
+ )\r
+{\r
+ return EfiCreateEventLegacyBootEx (\r
+ EFI_TPL_CALLBACK,\r
+ InternalEmptyFuntion,\r
+ NULL,\r
+ LegacyBootEvent\r
+ );\r
+}\r
+\r
+/**\r
+ Create an EFI event in the Legacy Boot Event Group and allows\r
+ the caller to specify a notification function. \r
+ \r
+ This function abstracts the creation of the Legacy Boot Event.\r
+ The Framework moved from a proprietary to UEFI 2.0 based mechanism.\r
+ This library abstracts the caller from how this event is created to prevent\r
+ to code form having to change with the version of the specification supported.\r
+ If LegacyBootEvent is NULL, then ASSERT().\r
+\r
+ @param NotifyTpl The task priority level of the event.\r
+ @param NotifyFunction The notification function to call when the event is signaled.\r
+ @param NotifyContext The content to pass to NotifyFunction when the event is signaled.\r
+ @param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).\r
+\r
+ @retval EFI_SUCCESS Event was created.\r
+ @retval Other Event was not created.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiCreateEventLegacyBootEx (\r
+ IN EFI_TPL NotifyTpl,\r
+ IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL\r
+ IN VOID *NotifyContext, OPTIONAL\r
+ OUT EFI_EVENT *LegacyBootEvent\r
)\r
{\r
EFI_STATUS Status;\r
//\r
Status = gBS->CreateEvent (\r
EFI_EVENT_SIGNAL_LEGACY_BOOT | EFI_EVENT_NOTIFY_SIGNAL_ALL,\r
- EFI_TPL_CALLBACK,\r
- NULL,\r
- NULL,\r
+ NotifyTpl,\r
+ NotifyFunction,\r
+ NotifyContext,\r
LegacyBootEvent\r
);\r
#else\r
//\r
Status = gBS->CreateEventEx (\r
EVENT_NOTIFY_SIGNAL,\r
- EFI_TPL_CALLBACK,\r
- NULL,\r
- NULL,\r
+ NotifyTpl,\r
+ NotifyFunction,\r
+ NotifyContext,\r
&gEfiEventLegacyBootGuid,\r
LegacyBootEvent\r
);\r
#endif\r
+\r
return Status;\r
}\r
\r
-\r
-\r
/**\r
Create a Read to Boot Event. \r
\r
EFI_STATUS\r
EFIAPI\r
EfiCreateEventReadyToBoot (\r
- IN EFI_EVENT *ReadyToBootEvent\r
+ OUT EFI_EVENT *ReadyToBootEvent\r
+ )\r
+{\r
+ return EfiCreateEventReadyToBootEx (\r
+ EFI_TPL_CALLBACK,\r
+ InternalEmptyFuntion,\r
+ NULL,\r
+ ReadyToBootEvent\r
+ );\r
+}\r
+\r
+/**\r
+ Create an EFI event in the Ready To Boot Event Group and allows\r
+ the caller to specify a notification function. \r
+ \r
+ This function abstracts the creation of the Ready to Boot Event.\r
+ The Framework moved from a proprietary to UEFI 2.0 based mechanism.\r
+ This library abstracts the caller from how this event is created to prevent\r
+ to code form having to change with the version of the specification supported.\r
+ If ReadyToBootEvent is NULL, then ASSERT().\r
+\r
+ @param NotifyTpl The task priority level of the event.\r
+ @param NotifyFunction The notification function to call when the event is signaled.\r
+ @param NotifyContext The content to pass to NotifyFunction when the event is signaled.\r
+ @param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).\r
+\r
+ @retval EFI_SUCCESS Event was created.\r
+ @retval Other Event was not created.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiCreateEventReadyToBootEx (\r
+ IN EFI_TPL NotifyTpl,\r
+ IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL\r
+ IN VOID *NotifyContext, OPTIONAL\r
+ OUT EFI_EVENT *ReadyToBootEvent\r
)\r
{\r
EFI_STATUS Status;\r
//\r
Status = gBS->CreateEvent (\r
EFI_EVENT_SIGNAL_READY_TO_BOOT | EFI_EVENT_NOTIFY_SIGNAL_ALL,\r
- EFI_TPL_CALLBACK,\r
- NULL,\r
- NULL,\r
+ NotifyTpl,\r
+ NotifyFunction,\r
+ NotifyContext,\r
ReadyToBootEvent\r
);\r
#else\r
//\r
Status = gBS->CreateEventEx (\r
EVENT_NOTIFY_SIGNAL,\r
- EFI_TPL_CALLBACK,\r
- NULL,\r
- NULL,\r
+ NotifyTpl,\r
+ NotifyFunction,\r
+ NotifyContext,\r
&gEfiEventReadyToBootGuid,\r
ReadyToBootEvent\r
);\r
EFI_GUID *\r
EFIAPI\r
EfiGetNameGuidFromFwVolDevicePathNode (\r
- IN MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode\r
+ IN CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode\r
)\r
{\r
ASSERT (FvDevicePathNode != NULL);\r
//\r
if (DevicePathType (&FvDevicePathNode->Header) == MEDIA_DEVICE_PATH ||\r
DevicePathSubType (&FvDevicePathNode->Header) == MEDIA_FV_FILEPATH_DP) {\r
- return &FvDevicePathNode->NameGuid;\r
+ return (EFI_GUID *) &FvDevicePathNode->NameGuid;\r
}\r
\r
#else\r
FvDevicePathNode->Piwg.Header.SubType == MEDIA_VENDOR_DP) {\r
if (CompareGuid (&gEfiFrameworkDevicePathGuid, &FvDevicePathNode->Piwg.PiwgSpecificDevicePath)) {\r
if (FvDevicePathNode->Piwg.Type == PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE) {\r
- return &FvDevicePathNode->NameGuid;\r
+ return (EFI_GUID *) &FvDevicePathNode->NameGuid;\r
}\r
}\r
}\r
is compiled to conform with the UEFI 2.0 specification use the new device path\r
else use the old form for backwards compatability.\r
\r
- @param FvDevicePathNode Pointer to a FV device path node to initialize\r
- @param NameGuid FV file name to use in FvDevicePathNode\r
+ @param FvDevicePathNode Pointer to a FV device path node to initialize\r
+ @param NameGuid FV file name to use in FvDevicePathNode\r
\r
**/\r
VOID\r
EFIAPI\r
EfiInitializeFwVolDevicepathNode (\r
- IN MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode,\r
- IN EFI_GUID *NameGuid\r
+ IN OUT MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode,\r
+ IN CONST EFI_GUID *NameGuid\r
)\r
{\r
ASSERT (FvDevicePathNode != NULL);\r