public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Chang, Abner" <abner.chang@amd.com>
To: Nickle Wang <nickle.wang@hpe.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Yang, Atom" <Atom.Yang@amd.com>, Nick Ramirez <nramirez@nvidia.com>
Subject: Re: [edk2-staging][PATCH v2 01/15] edk2-staging/RedfishClientPkg: Introduce Redfish event library
Date: Tue, 26 Jul 2022 01:40:17 +0000	[thread overview]
Message-ID: <MN2PR12MB3966727602607F463E8E15C8EA949@MN2PR12MB3966.namprd12.prod.outlook.com> (raw)
In-Reply-To: <20220725013555.926-2-nickle.wang@hpe.com>

[AMD Official Use Only - General]

Reviewed-by: Abner Chang <abner.chang@amd.com>

> -----Original Message-----
> From: Nickle Wang <nickle.wang@hpe.com>
> Sent: Monday, July 25, 2022 9:36 AM
> To: devel@edk2.groups.io
> Cc: Chang, Abner <Abner.Chang@amd.com>; Yang, Atom
> <Atom.Yang@amd.com>; Nick Ramirez <nramirez@nvidia.com>
> Subject: [edk2-staging][PATCH v2 01/15] edk2-staging/RedfishClientPkg:
> Introduce Redfish event library
> 
> [CAUTION: External Email]
> 
> Add RedfishEventLib to handle Redfish event. There are two events defined in
> this library. One is the event before feature driver provisioning and the other one
> is the event after all provisioning is finished.
> 
> Signed-off-by: Nickle Wang <nickle.wang@hpe.com>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Yang Atom <Atom.Yang@amd.com>
> Cc: Nick Ramirez <nramirez@nvidia.com>
> ---
>  .../Include/Guid/RedfishClientEventGroup.h    |  27 ++++
>  .../Include/Library/RedfishEventLib.h         |  77 ++++++++++
>  .../Library/RedfishEventLib/RedfishEventLib.c | 139 ++++++++++++++++++
>  .../RedfishEventLib/RedfishEventLib.inf       |  42 ++++++
>  RedfishClientPkg/RedfishClientLibs.dsc.inc    |   1 +
>  RedfishClientPkg/RedfishClientPkg.dec         |   5 +
>  6 files changed, 291 insertions(+)
>  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 0000000000..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<BR>
> +
> +  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 0000000000..1f3d0acf19
> --- /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<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef REDFISH_EVENT_LIB_H_
> +#define REDFISH_EVENT_LIB_H_
> +
> +#include <Uefi.h>
> +
> +/**
> +  Create an EFI event before Redfish provisioning start.
> +
> +  @param  NotifyFunction            The 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  NotifyFunction            The 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 (
> +  IN VOID
> +  );
> +
> +/**
> +  Signal after provisioning event.
> +
> +  @retval EFI_SUCCESS       Event was created.
> +  @retval Other             Event was not created.
> +
> +**/
> +EFI_STATUS
> +SignalAfterProvisioningEvent (
> +  IN VOID
> +  );
> +
> +#endif
> diff --git a/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
> b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
> new file mode 100644
> index 0000000000..0a8483c371
> --- /dev/null
> +++ b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.c
> @@ -0,0 +1,139 @@
> +/** @file
> +  Redfish event library to deliver Redfish specific event.
> +
> +  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <Uefi.h>
> +
> +#include <Guid/RedfishClientEventGroup.h>
> +
> +#include <Library/UefiLib.h>
> +#include <Library/BaseLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/UefiBootServicesTableLib.h>
> +#include <Library/RedfishEventLib.h>
> +
> +/**
> +  Create an EFI event before Redfish provisioning start.
> +
> +  @param  NotifyFunction            The 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
> +  )
> +{
> +  EFI_STATUS Status;
> +
> +  Status = gBS->CreateEventEx (
> +                  EVT_NOTIFY_SIGNAL,
> +                  TPL_CALLBACK,
> +                  (NotifyFunction == NULL ? EfiEventEmptyFunction : NotifyFunction),
> +                  NotifyContext,
> +                  &gEfiRedfishClientFeatureReadyToProvisioningGuid,
> +                  ReadyToProvisioningEvent
> +                  );
> +
> +  return Status;
> +}
> +
> +/**
> +  Create an EFI event after Redfish provisioning finished.
> +
> +  @param  NotifyFunction            The 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
> +  )
> +{
> +  EFI_STATUS Status;
> +
> +  Status = gBS->CreateEventEx (
> +                  EVT_NOTIFY_SIGNAL,
> +                  TPL_CALLBACK,
> +                  (NotifyFunction == NULL ? EfiEventEmptyFunction : NotifyFunction),
> +                  NotifyContext,
> +                  &gEfiRedfishClientFeatureAfterProvisioningGuid,
> +                  ReadyToProvisioningEvent
> +                  );
> +
> +  return Status;
> +}
> +
> +/**
> +  Signal ready to provisioning event.
> +
> +  @retval EFI_SUCCESS       Event was created.
> +  @retval Other             Event was not created.
> +
> +**/
> +EFI_STATUS
> +SignalReadyToProvisioningEvent (
> +  IN VOID
> +  )
> +{
> +  EFI_STATUS Status;
> +  EFI_EVENT  Event;
> +
> +  Status = CreateReadyToProvisioningEvent (NULL, NULL, &Event);  if
> + (EFI_ERROR (Status)) {
> +    DEBUG ((DEBUG_ERROR, "%a, failed to create after provisioning event\n",
> __FUNCTION__));
> +    return Status;
> +  }
> +
> +  gBS->SignalEvent (Event);
> +  gBS->CloseEvent (Event);
> +
> +  return EFI_SUCCESS;
> +}
> +
> +/**
> +  Signal after provisioning event.
> +
> +  @retval EFI_SUCCESS       Event was created.
> +  @retval Other             Event was not created.
> +
> +**/
> +EFI_STATUS
> +SignalAfterProvisioningEvent (
> +  IN VOID
> +  )
> +{
> +  EFI_STATUS Status;
> +  EFI_EVENT  Event;
> +
> +  Status = CreateAfterProvisioningEvent (NULL, NULL, &Event);  if
> + (EFI_ERROR (Status)) {
> +    DEBUG ((DEBUG_ERROR, "%a, failed to create after provisioning event\n",
> __FUNCTION__));
> +    return Status;
> +  }
> +
> +  gBS->SignalEvent (Event);
> +  gBS->CloseEvent (Event);
> +
> +  return EFI_SUCCESS;
> +}
> +
> diff --git a/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf
> b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf
> new file mode 100644
> index 0000000000..a9d475c27c
> --- /dev/null
> +++ b/RedfishClientPkg/Library/RedfishEventLib/RedfishEventLib.inf
> @@ -0,0 +1,42 @@
> +## @file
> +#
> +#  (C) Copyright 2022 Hewlett Packard Enterprise Development LP<BR> # #
> +SPDX-License-Identifier: BSD-2-Clause-Patent # ##
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010006
> +  BASE_NAME                      = RedfishEventLib
> +  FILE_GUID                      = C4F7E27D-2338-43EA-9D1F-D10960E36521
> +  MODULE_TYPE                    = DXE_DRIVER
> +  VERSION_STRING                 = 1.0
> +  LIBRARY_CLASS                  = RedfishEventLib| DXE_DRIVER UEFI_DRIVER
> +
> +#
> +#  VALID_ARCHITECTURES           = IA32 X64 EBC
> +#
> +
> +[Sources]
> +  RedfishEventLib.c
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  MdeModulePkg/MdeModulePkg.dec
> +  RedfishPkg/RedfishPkg.dec
> +  RedfishClientPkg/RedfishClientPkg.dec
> +
> +[LibraryClasses]
> +  BaseLib
> +  DebugLib
> +  UefiBootServicesTableLib
> +  UefiLib
> +
> +[Protocols]
> +
> +[Pcd]
> +
> +[Guids]
> +  gEfiRedfishClientFeatureReadyToProvisioningGuid
> +  gEfiRedfishClientFeatureAfterProvisioningGuid
> diff --git a/RedfishClientPkg/RedfishClientLibs.dsc.inc
> b/RedfishClientPkg/RedfishClientLibs.dsc.inc
> index 5467acedd0..ce1c27d884 100644
> --- a/RedfishClientPkg/RedfishClientLibs.dsc.inc
> +++ b/RedfishClientPkg/RedfishClientLibs.dsc.inc
> @@ -28,3 +28,4 @@
> 
> RedfishContentCodingLib|RedfishPkg/Library/RedfishContentCodingLibNull/Red
> fishContentCodingLibNull.inf
> 
> ConverterCommonLib|RedfishClientPkg/ConverterLib/edk2library/ConverterCo
> mmonLib/ConverterCommonLib.inf
> 
> +
> + RedfishEventLib|RedfishClientPkg/Library/RedfishEventLib/RedfishEventL
> + ib.inf
> diff --git a/RedfishClientPkg/RedfishClientPkg.dec
> b/RedfishClientPkg/RedfishClientPkg.dec
> index 09df062dd3..39b2f5baf8 100644
> --- a/RedfishClientPkg/RedfishClientPkg.dec
> +++ b/RedfishClientPkg/RedfishClientPkg.dec
> @@ -21,6 +21,7 @@
> 
>  [LibraryClasses]
>    RedfishFeatureUtilityLib|Include/Library/RedfishFeatureUtilityLib.h
> +  RedfishEventLib|Include/Library/RedfishEventLib.h
> 
>  [LibraryClasses.Common.Private]
>    ##  @libraryclass Redfish Helper Library @@ -39,6 +40,10 @@
>    ## Include/Guid/RedfishClientPkgTokenSpace.h
>    gEfiRedfishClientPkgTokenSpaceGuid    = { 0x8c444dae, 0x728b, 0x48ee, { 0x9e,
> 0x19, 0x8f, 0x0a, 0x3d, 0x4e, 0x9c, 0xc8 } }
> 
> +  ## Include/Guid/RedfishClientEventGroup.h
> +  gEfiRedfishClientFeatureReadyToProvisioningGuid = { 0x77E4FC1C, 0x2428,
> 0x47EE, { 0x9E, 0xEC, 0x8B, 0x77, 0xEF, 0x9D, 0x4E, 0xF0 } }
> +  gEfiRedfishClientFeatureAfterProvisioningGuid   = { 0xE547CB6F, 0x306F,
> 0x4226, { 0xAB, 0x70, 0xA0, 0x6E, 0x26, 0xF1, 0x2E, 0xD0 } }
> +
>  [PcdsFixedAtBuild]
> 
> gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaStringSize|32|UINT
> 32|0x10000001
> 
> gEfiRedfishClientPkgTokenSpaceGuid.PcdMaxRedfishSchemaVersionSize|8|UIN
> T32|0x10000002
> --
> 2.32.0.windows.2

  reply	other threads:[~2022-07-26  1:40 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-25  1:35 [edk2-staging][PATCH v2 00/15] Update RedfishClientpkg Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 01/15] edk2-staging/RedfishClientPkg: Introduce Redfish event library Nickle Wang
2022-07-26  1:40   ` Chang, Abner [this message]
2022-07-25  1:35 ` [edk2-staging][PATCH v2 02/15] edk2-staging/RedfishClientPkg: Introduce Redfish version library Nickle Wang
2022-07-26  1:46   ` Chang, Abner
2022-07-25  1:35 ` [edk2-staging][PATCH v2 03/15] edk2-staging/RedfishClientPkg: Update Redfish Resource Config Protocol Nickle Wang
2022-07-26  1:49   ` Chang, Abner
2022-07-25  1:35 ` [edk2-staging][PATCH v2 04/15] edk2-staging/RedfishClientPkg: Introduce Redfish resource config library Nickle Wang
2022-07-26  1:58   ` Chang, Abner
2022-07-25  1:35 ` [edk2-staging][PATCH v2 05/15] edk2-staging/RedfishClientPkg: Introduce resource identify library Nickle Wang
2022-07-26  2:04   ` Chang, Abner
2022-07-27  1:39     ` Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 06/15] edk2-staging/RedfishClientPkg: Introduce RedfishConfigLangMap driver Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 07/15] edk2-staging/RedfishClientPkg: Update ETag driver Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 08/15] edk2-staging/RedfishClientPkg: Update Redfish feature core driver Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 09/15] edk2-staging/RedfishClientPkg: Update RedfishLib Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 10/15] edk2-staging/RedfishClientPkg: Update Redfish feature utility library Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 11/15] edk2-staging/RedfishClientPkg: Rename RedfishMemoryCollection driver Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 12/15] edk2-staging/RedfishClientPkg: Rename Memory feature driver Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 13/15] edk2-staging/RedfishClientPkg: Introduce Computer System collection driver Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 14/15] edk2-staging/RedfishClientPkg: Introduce Computer System feature driver Nickle Wang
2022-07-25  1:35 ` [edk2-staging][PATCH v2 15/15] edk2-staging/RedfishClientPkg: Introduce Bios " Nickle Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MN2PR12MB3966727602607F463E8E15C8EA949@MN2PR12MB3966.namprd12.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox