From: "Nickle Wang via groups.io" <nicklew=nvidia.com@groups.io>
To: <devel@edk2.groups.io>
Cc: Abner Chang <abner.chang@amd.com>,
Igor Kulchytskyy <igork@ami.com>,
"Nick Ramirez" <nramirez@nvidia.com>
Subject: [edk2-devel] [edk2-redfish-client][PATCH 2/6] RedfishClientPkg/RedfishConfigLangMapDxe: fix issue and enhancement.
Date: Thu, 23 Nov 2023 22:33:55 +0800 [thread overview]
Message-ID: <20231123143355.3276-1-nicklew@nvidia.com> (raw)
-Fix typo (replace Listheader to ListHeader).
-Replace "%a," to "%a:".
-Add more debug message.
-Fix issue of assigning ASCII character to Unicode string pointer.
-Remove the exit-boot-service callback since data is saved at
after-provisioning event. There is no need to save data to variable
again.
Signed-off-by: Nickle Wang <nicklew@nvidia.com>
Cc: Abner Chang <abner.chang@amd.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Nick Ramirez <nramirez@nvidia.com>
---
.../RedfishConfigLangMapDxe.inf | 1 -
.../RedfishConfigLangMapDxe.h | 2 +-
.../RedfishConfigLangMapDxe.c | 89 +++++++++----------
3 files changed, 41 insertions(+), 51 deletions(-)
diff --git a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.inf b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.inf
index 42d9daf2..02346745 100644
--- a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.inf
+++ b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.inf
@@ -41,7 +41,6 @@
gEdkIIRedfishConfigLangMapProtocolGuid ## PRODUCED ##
[Guids]
- gEfiEventExitBootServicesGuid ## CONSUMED ##
gEfiRedfishClientVariableGuid ## CONSUMED ##
[Depex]
diff --git a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.h b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.h
index efa27d4d..4ac55941 100644
--- a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.h
+++ b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.h
@@ -49,7 +49,7 @@ typedef struct {
// Definition of REDFISH_CONFIG_LANG_MAP_LIST
//
typedef struct {
- LIST_ENTRY Listheader;
+ LIST_ENTRY ListHeader;
UINTN TotalSize;
UINTN Count;
} REDFISH_CONFIG_LANG_MAP_LIST;
diff --git a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c
index 97f29549..8c930445 100644
--- a/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c
+++ b/RedfishClientPkg/RedfishConfigLangMapDxe/RedfishConfigLangMapDxe.c
@@ -102,7 +102,7 @@ ON_ERROR:
@param[in] Uri The URI string matching to this ConfigLang.
@param[in] ConfigLang ConfigLang string.
- @retval EFI_SUCCESS config language map recourd is added.
+ @retval EFI_SUCCESS config language map record is added.
@retval Others Fail to add config language map.
**/
@@ -124,7 +124,7 @@ AddConfigLangMapRecord (
return EFI_OUT_OF_RESOURCES;
}
- InsertTailList (&List->Listheader, &NewRecord->List);
+ InsertTailList (&List->ListHeader, &NewRecord->List);
++List->Count;
List->TotalSize += NewRecord->Size;
@@ -137,7 +137,7 @@ AddConfigLangMapRecord (
@param[in] List Target config language map list to be removed.
@param[in] Record Pointer to the instance to be deleted.
- @retval EFI_SUCCESS config language map recourd is removed.
+ @retval EFI_SUCCESS config language map record is removed.
@retval Others Fail to add config language map.
**/
@@ -237,20 +237,20 @@ DumpConfigLangMapList (
DEBUG ((DEBUG_ERROR, "%s\n", Msg));
}
- if (IsListEmpty (&ConfigLangMapList->Listheader)) {
+ if (IsListEmpty (&ConfigLangMapList->ListHeader)) {
DEBUG ((DEBUG_MANAGEABILITY, "ConfigLangMap list is empty\n"));
return EFI_NOT_FOUND;
}
DEBUG ((DEBUG_MANAGEABILITY, "Count: %d Total Size: %d\n", ConfigLangMapList->Count, ConfigLangMapList->TotalSize));
Record = NULL;
- List = GetFirstNode (&ConfigLangMapList->Listheader);
- while (!IsNull (&ConfigLangMapList->Listheader, List)) {
+ List = GetFirstNode (&ConfigLangMapList->ListHeader);
+ while (!IsNull (&ConfigLangMapList->ListHeader, List)) {
Record = REDFISH_CONFIG_LANG_MAP_RECORD_FROM_LIST (List);
DEBUG ((DEBUG_MANAGEABILITY, "ConfigLang: %s Uri: %s Size: %d\n", Record->ConfigLang, Record->Uri, Record->Size));
- List = GetNextNode (&ConfigLangMapList->Listheader, List);
+ List = GetNextNode (&ConfigLangMapList->ListHeader, List);
}
return EFI_SUCCESS;
@@ -317,16 +317,16 @@ ReleaseConfigLangMapList (
return EFI_INVALID_PARAMETER;
}
- if (IsListEmpty (&ConfigLangMapList->Listheader)) {
+ if (IsListEmpty (&ConfigLangMapList->ListHeader)) {
return EFI_SUCCESS;
}
Record = NULL;
Next = NULL;
- List = GetFirstNode (&ConfigLangMapList->Listheader);
- while (!IsNull (&ConfigLangMapList->Listheader, List)) {
+ List = GetFirstNode (&ConfigLangMapList->ListHeader);
+ while (!IsNull (&ConfigLangMapList->ListHeader, List)) {
Record = REDFISH_CONFIG_LANG_MAP_RECORD_FROM_LIST (List);
- Next = GetNextNode (&ConfigLangMapList->Listheader, List);
+ Next = GetNextNode (&ConfigLangMapList->ListHeader, List);
DeleteConfigLangMapRecord (ConfigLangMapList, Record);
@@ -365,12 +365,12 @@ SaveConfigLangMapList (
return EFI_INVALID_PARAMETER;
}
- if (IsListEmpty (&ConfigLangMapList->Listheader)) {
+ if (IsListEmpty (&ConfigLangMapList->ListHeader)) {
return EFI_SUCCESS;
}
//
- // Caculate the total size we need to keep ConfigLangMap list.
+ // Calculate the total size we need to keep ConfigLangMap list.
//
VarSize = ConfigLangMapList->TotalSize + sizeof (CHAR16); // terminator character
VarData = AllocateZeroPool (VarSize);
@@ -380,29 +380,29 @@ SaveConfigLangMapList (
Seeker = (EFI_STRING)VarData;
Record = NULL;
- List = GetFirstNode (&ConfigLangMapList->Listheader);
- while (!IsNull (&ConfigLangMapList->Listheader, List)) {
+ List = GetFirstNode (&ConfigLangMapList->ListHeader);
+ while (!IsNull (&ConfigLangMapList->ListHeader, List)) {
Record = REDFISH_CONFIG_LANG_MAP_RECORD_FROM_LIST (List);
StringSize = StrSize (Record->Uri);
CopyMem (Seeker, Record->Uri, StringSize);
Seeker += (StringSize / sizeof (CHAR16) - 1);
- *Seeker = '|';
+ *Seeker = L'|';
++Seeker;
StringSize = StrSize (Record->ConfigLang);
CopyMem (Seeker, Record->ConfigLang, StringSize);
Seeker += (StringSize / sizeof (CHAR16) - 1);
- *Seeker = '\n';
+ *Seeker = L'\n';
++Seeker;
- List = GetNextNode (&ConfigLangMapList->Listheader, List);
+ List = GetNextNode (&ConfigLangMapList->ListHeader, List);
}
- *Seeker = '\0';
+ *Seeker = L'\0';
#if CONFIG_LANG_MAP_DEBUG_ENABLED
DumpRawBuffer (VarData, VarSize);
@@ -481,7 +481,7 @@ InitialConfigLangMapList (
//
Seeker = StrStr (UriPointer, L"|");
if (Seeker == NULL) {
- DEBUG ((DEBUG_ERROR, "%a, data corrupted\n", __func__));
+ DEBUG ((DEBUG_ERROR, "%a: data corrupted\n", __func__));
Status = EFI_DEVICE_ERROR;
goto ON_ERROR;
}
@@ -494,7 +494,7 @@ InitialConfigLangMapList (
//
Seeker = StrStr (ConfigLangPointer, L"\n");
if (Seeker == NULL) {
- DEBUG ((DEBUG_ERROR, "%a, data corrupted\n", __func__));
+ DEBUG ((DEBUG_ERROR, "%a: data corrupted\n", __func__));
Status = EFI_DEVICE_ERROR;
goto ON_ERROR;
}
@@ -548,11 +548,13 @@ RedfishConfigLangMapGet (
return EFI_INVALID_PARAMETER;
}
+ DEBUG ((DEBUG_MANAGEABILITY, "%a: type: 0x%x %s\n", __func__, QueryStringType, QueryString));
+
Private = REDFISH_CONFIG_LANG_MAP_PRIVATE_FROM_THIS (This);
*ResultString = NULL;
- Target = FindConfigLangMapRecord (&Private->ConfigLangList.Listheader, QueryString, (QueryStringType == RedfishGetTypeUri));
+ Target = FindConfigLangMapRecord (&Private->ConfigLangList.ListHeader, QueryString, (QueryStringType == RedfishGetTypeUri));
if (Target == NULL) {
#if CONFIG_LANG_MAP_DEBUG_ENABLED
DumpConfigLangMapList (&Private->ConfigLangList, L"EFI_NOT_FOUND");
@@ -597,10 +599,12 @@ RedfishConfigLangMapSet (
return EFI_INVALID_PARAMETER;
}
+ DEBUG ((DEBUG_MANAGEABILITY, "%a: %s -> %s\n", __func__, ConfigLang, (Uri == NULL ? L"NULL" : Uri)));
+
Private = REDFISH_CONFIG_LANG_MAP_PRIVATE_FROM_THIS (This);
Status = EFI_NOT_FOUND;
- Target = FindConfigLangMapRecord (&Private->ConfigLangList.Listheader, ConfigLang, FALSE);
+ Target = FindConfigLangMapRecord (&Private->ConfigLangList.ListHeader, ConfigLang, FALSE);
if (Target != NULL) {
//
// Remove old one and create new one.
@@ -609,7 +613,7 @@ RedfishConfigLangMapSet (
}
//
- // When Uri is NULL, it means that we want to remov this record.
+ // When Uri is NULL, it means that we want to remove this record.
//
if (Uri == NULL) {
return Status;
@@ -644,14 +648,16 @@ RedfishConfigLangMapFlush (
Status = SaveConfigLangMapList (&Private->ConfigLangList, Private->VariableName);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "%a, save ConfigLangMap list to variable: %s failed: %r\n", __func__, Private->VariableName, Status));
+ DEBUG ((DEBUG_ERROR, "%a: save ConfigLangMap list to variable: %s failed: %r\n", __func__, Private->VariableName, Status));
}
+ DEBUG ((DEBUG_MANAGEABILITY, "%a: save Config Language map to variable: %s\n", __func__, Private->VariableName));
+
return Status;
}
/**
- Callback function executed when the ExitBootService event group is signaled.
+ Callback function executed when the AfterProvisioning event group is signaled.
@param[in] Event Event whose notification function is being invoked.
@param[out] Context Pointer to the Context buffer
@@ -659,13 +665,13 @@ RedfishConfigLangMapFlush (
**/
VOID
EFIAPI
-RedfishConfigLangMapOnExitBootService (
+RedfishConfigLangMapOnAfterProvisioning (
IN EFI_EVENT Event,
OUT VOID *Context
)
{
//
- // Memory is about to be released. Keep list into variable.
+ // Redfish provisioning is finished. Keep list into variable.
//
RedfishConfigLangMapFlush (&mRedfishConfigLangMapPrivate->Protocol);
}
@@ -694,7 +700,7 @@ RedfishConfigLangMapDriverUnload (
(VOID *)&mRedfishConfigLangMapPrivate->Protocol
);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "%a, can not uninstall gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status));
+ DEBUG ((DEBUG_ERROR, "%a: can not uninstall gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status));
ASSERT (FALSE);
}
@@ -753,7 +759,7 @@ RedfishConfigLangMapDriverEntryPoint (
return EFI_OUT_OF_RESOURCES;
}
- InitializeListHead (&mRedfishConfigLangMapPrivate->ConfigLangList.Listheader);
+ InitializeListHead (&mRedfishConfigLangMapPrivate->ConfigLangList.ListHeader);
mRedfishConfigLangMapPrivate->VariableName = AllocateCopyPool (StrSize (CONFIG_LANG_MAP_VARIABLE_NAME), CONFIG_LANG_MAP_VARIABLE_NAME);
if (mRedfishConfigLangMapPrivate->VariableName == NULL) {
Status = EFI_OUT_OF_RESOURCES;
@@ -770,40 +776,25 @@ RedfishConfigLangMapDriverEntryPoint (
(VOID *)&mRedfishConfigLangMapPrivate->Protocol
);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "%a, can not install gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status));
+ DEBUG ((DEBUG_ERROR, "%a: can not install gEdkIIRedfishConfigLangMapProtocolGuid: %r\n", __func__, Status));
ASSERT (FALSE);
goto ON_ERROR;
}
- //
- // Create Exit Boot Service event.
- //
- Status = gBS->CreateEventEx (
- EVT_NOTIFY_SIGNAL,
- TPL_CALLBACK,
- RedfishConfigLangMapOnExitBootService,
- NULL,
- &gEfiEventExitBootServicesGuid,
- &mRedfishConfigLangMapPrivate->ExitBootEvent
- );
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "%a: Fail to register Exit Boot Service event.", __func__));
- goto ON_ERROR;
- }
-
//
// Read existing record from variable.
//
+ DEBUG ((DEBUG_MANAGEABILITY, "%a: Initial ConfigLangMap List from variable: %s\n", __func__, mRedfishConfigLangMapPrivate->VariableName));
Status = InitialConfigLangMapList (&mRedfishConfigLangMapPrivate->ConfigLangList, mRedfishConfigLangMapPrivate->VariableName);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_MANAGEABILITY, "%a, Initial ConfigLangMap List: %r\n", __func__, Status));
+ DEBUG ((DEBUG_MANAGEABILITY, "%a: Initial ConfigLangMap List: %r\n", __func__, Status));
}
//
// Register after provisioning event
//
Status = CreateAfterProvisioningEvent (
- RedfishConfigLangMapOnExitBootService,
+ RedfishConfigLangMapOnAfterProvisioning,
NULL,
&mRedfishConfigLangMapPrivate->ProvisionEvent
);
--
2.17.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111672): https://edk2.groups.io/g/devel/message/111672
Mute This Topic: https://groups.io/mt/102767542/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next reply other threads:[~2023-11-23 14:34 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-23 14:33 Nickle Wang via groups.io [this message]
2023-11-28 3:19 ` [edk2-devel] [edk2-redfish-client][PATCH 2/6] RedfishClientPkg/RedfishConfigLangMapDxe: fix issue and enhancement Chang, Abner via groups.io
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=20231123143355.3276-1-nicklew@nvidia.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