Re: [edk2-devel] [edk2-staging][PATCH v2 1/3] edk2-staging/RedfishClientPkg: Introduce Redfish event library
Reviewed-by: Abner Chang > -Original Message- > From: devel@edk2.groups.io On Behalf Of Nickle > Wang > Sent: Wednesday, May 25, 2022 11:14 AM > To: devel@edk2.groups.io > Cc: Wang, Nickle (Server BIOS) ; Chang, Abner (HPS > SW/FW Technologist) > Subject: [edk2-devel] [edk2-staging][PATCH v2 1/3] edk2- > staging/RedfishClientPkg: Introduce Redfish event library > > Add RedfishEventLib to Redfish client package. This library provides > interface for Redfish feature drivers to listen to Redfish event > such as the event before provisioning and the event after > provisioning. Feature driver can perform additional operation before > and after Redfish provisioning. > > Signed-off-by: Nickle Wang > Cc: Abner Chang > --- > .../Include/Guid/RedfishClientEventGroup.h| 27 > .../Include/Library/RedfishEventLib.h | 77 ++ > .../Library/RedfishEventLib/RedfishEventLib.c | 139 ++ > .../RedfishEventLib/RedfishEventLib.inf | 38 + > RedfishClientPkg/RedfishClientLibs.dsc.inc| 2 +- > RedfishClientPkg/RedfishClientPkg.dec | 7 +- > 6 files changed, 288 insertions(+), 2 deletions(-) > create mode 100644 > RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h > create mode 100644 RedfishClientPkg/Include/Library/RedfishEventLib.h > create mode 100644 > RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c > create mode 100644 > RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf > > diff --git a/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h > b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h > new file mode 100644 > index 00..0d88dd4726 > --- /dev/null > +++ b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h > @@ -0,0 +1,27 @@ > +/** @file > + GUID for Redfish Client Event Group GUID > + > + (C) Copyright 2022 Hewlett Packard Enterprise Development LP > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef REDFISH_CLIENT_EVENT_GROUP_GUID_H_ > +#define REDFISH_CLIENT_EVENT_GROUP_GUID_H_ > + > +#define REDFISH_CLIENT_FEATURE_READY_TO_PROVISIONING_GUID \ > + { \ > +0x77E4FC1C, 0x2428, 0x47EE, { 0x9E, 0xEC, 0x8B, 0x77, 0xEF, 0x9D, 0x4E, > 0xF0 } \ > + } > + > +extern EFI_GUID gEfiRedfishClientFeatureReadyToProvisioningGuid; > + > +#define REDFISH_CLIENT_FEATURE_AFTER_PROVISIONING_GUID \ > + { \ > +0xE547CB6F, 0x306F, 0x4226, { 0xAB, 0x70, 0xA0, 0x6E, 0x26, 0xF1, 0x2E, > 0xD0 } \ > + } > + > +extern EFI_GUID gEfiRedfishClientFeatureAfterProvisioningGuid; > + > +#endif > diff --git a/RedfishClientPkg/Include/Library/RedfishEventLib.h > b/RedfishClientPkg/Include/Library/RedfishEventLib.h > new file mode 100644 > index 00..9b553f4425 > --- /dev/null > +++ b/RedfishClientPkg/Include/Library/RedfishEventLib.h > @@ -0,0 +1,77 @@ > +/** @file > + This file defines the Redfish event library interface. > + > + (C) Copyright 2022 Hewlett Packard Enterprise Development LP > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef REDFISH_EVENT_LIB_H_ > +#define REDFISH_EVENT_LIB_H_ > + > +#include > + > +/** > + Create an EFI event before Redfish provisioning start. > + > + @param NotifyFunctionThe notification function to call when > the > event is signaled. > + @param NotifyContext The content to pass to NotifyFunction > when > the event is signaled. > + @param ReadyToProvisioningEvent Returns the EFI event returned from > gBS->CreateEvent(Ex). > + > + @retval EFI_SUCCESS Event was created. > + @retval Other Event was not created. > + > +**/ > +EFI_STATUS > +EFIAPI > +CreateReadyToProvisioningEvent ( > + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL > + IN VOID *NotifyContext, OPTIONAL > + OUT EFI_EVENT *ReadyToProvisioningEvent > + ); > + > +/** > + Create an EFI event after Redfish provisioning finished. > + > + @param NotifyFunctionThe notification function to call when > the > event is signaled. > + @param NotifyContext The content to pass to NotifyFunction > when > the event is signaled. > + @param ReadyToProvisioningEvent Returns the EFI event returned from > gBS->CreateEvent(Ex). > + > + @retval EFI_SUCCESS Event was created. > + @retval Other Event was not created. > + > +**/ > +EFI_STATUS > +EFIAPI > +CreateAfterProvisioningEvent ( > + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL > + IN VOID *NotifyContext, OPTIONAL > + OUT EFI_EVENT *ReadyToPro
[edk2-devel] [edk2-staging][PATCH v2 1/3] edk2-staging/RedfishClientPkg: Introduce Redfish event library
Add RedfishEventLib to Redfish client package. This library provides interface for Redfish feature drivers to listen to Redfish event such as the event before provisioning and the event after provisioning. Feature driver can perform additional operation before and after Redfish provisioning. Signed-off-by: Nickle Wang Cc: Abner Chang --- .../Include/Guid/RedfishClientEventGroup.h| 27 .../Include/Library/RedfishEventLib.h | 77 ++ .../Library/RedfishEventLib/RedfishEventLib.c | 139 ++ .../RedfishEventLib/RedfishEventLib.inf | 38 + RedfishClientPkg/RedfishClientLibs.dsc.inc| 2 +- RedfishClientPkg/RedfishClientPkg.dec | 7 +- 6 files changed, 288 insertions(+), 2 deletions(-) create mode 100644 RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h create mode 100644 RedfishClientPkg/Include/Library/RedfishEventLib.h create mode 100644 RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c create mode 100644 RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf diff --git a/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h new file mode 100644 index 00..0d88dd4726 --- /dev/null +++ b/RedfishClientPkg/Include/Guid/RedfishClientEventGroup.h @@ -0,0 +1,27 @@ +/** @file + GUID for Redfish Client Event Group GUID + + (C) Copyright 2022 Hewlett Packard Enterprise Development LP + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef REDFISH_CLIENT_EVENT_GROUP_GUID_H_ +#define REDFISH_CLIENT_EVENT_GROUP_GUID_H_ + +#define REDFISH_CLIENT_FEATURE_READY_TO_PROVISIONING_GUID \ + { \ +0x77E4FC1C, 0x2428, 0x47EE, { 0x9E, 0xEC, 0x8B, 0x77, 0xEF, 0x9D, 0x4E, 0xF0 } \ + } + +extern EFI_GUID gEfiRedfishClientFeatureReadyToProvisioningGuid; + +#define REDFISH_CLIENT_FEATURE_AFTER_PROVISIONING_GUID \ + { \ +0xE547CB6F, 0x306F, 0x4226, { 0xAB, 0x70, 0xA0, 0x6E, 0x26, 0xF1, 0x2E, 0xD0 } \ + } + +extern EFI_GUID gEfiRedfishClientFeatureAfterProvisioningGuid; + +#endif diff --git a/RedfishClientPkg/Include/Library/RedfishEventLib.h b/RedfishClientPkg/Include/Library/RedfishEventLib.h new file mode 100644 index 00..9b553f4425 --- /dev/null +++ b/RedfishClientPkg/Include/Library/RedfishEventLib.h @@ -0,0 +1,77 @@ +/** @file + This file defines the Redfish event library interface. + + (C) Copyright 2022 Hewlett Packard Enterprise Development LP + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef REDFISH_EVENT_LIB_H_ +#define REDFISH_EVENT_LIB_H_ + +#include + +/** + Create an EFI event before Redfish provisioning start. + + @param NotifyFunctionThe notification function to call when the event is signaled. + @param NotifyContext The content to pass to NotifyFunction when the event is signaled. + @param ReadyToProvisioningEvent Returns the EFI event returned from gBS->CreateEvent(Ex). + + @retval EFI_SUCCESS Event was created. + @retval Other Event was not created. + +**/ +EFI_STATUS +EFIAPI +CreateReadyToProvisioningEvent ( + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL + IN VOID *NotifyContext, OPTIONAL + OUT EFI_EVENT *ReadyToProvisioningEvent + ); + +/** + Create an EFI event after Redfish provisioning finished. + + @param NotifyFunctionThe notification function to call when the event is signaled. + @param NotifyContext The content to pass to NotifyFunction when the event is signaled. + @param ReadyToProvisioningEvent Returns the EFI event returned from gBS->CreateEvent(Ex). + + @retval EFI_SUCCESS Event was created. + @retval Other Event was not created. + +**/ +EFI_STATUS +EFIAPI +CreateAfterProvisioningEvent ( + IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL + IN VOID *NotifyContext, OPTIONAL + OUT EFI_EVENT *ReadyToProvisioningEvent + ); + +/** + Signal ready to provisioning event. + + @retval EFI_SUCCESS Event was created. + @retval Other Event was not created. + +**/ +EFI_STATUS +SignalReadyToProvisioningEvent ( + VOID + ); + +/** + Signal after provisioning event. + + @retval EFI_SUCCESS Event was created. + @retval Other Event was not created. + +**/ +EFI_STATUS +SignalAfterProvisioningEvent ( + VOID + ); + +#endif diff --git a/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c new file mode 100644 index 00..34aa4cac46 --- /dev/null +++ b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c @@ -0,0 +1,139 @@ +/** @file + Redfish event library implementation. + + (C) Copyright 2022 Hewlett Packard Enterprise Development LP + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +#include + +#include +#include +#include +#include +#include + +/** + Create an EFI event before Redfish