From: "Tomas Pilar (tpilar)" <Tomas.Pilar@arm.com>
To: <devel@edk2.groups.io>
Cc: Ray Ni <ray.ni@intel.com>, Zhichao Gao <zhichao.gao@intel.com>
Subject: [PATCH v1 5/6] ShellPkg/AcpiView: Refactor DumpAcpiTableToFile
Date: Thu, 21 May 2020 19:16:28 +0100 [thread overview]
Message-ID: <20200521181629.79-6-Tomas.Pilar@arm.com> (raw)
In-Reply-To: <20200521181629.79-1-Tomas.Pilar@arm.com>
Method is refactored into two parts. A new method is
created that dumps arbitrary buffers into a newly created
file. This method is called from core code after the core code
determined the appropriate filename to be used.
This improves the modular design.
Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Signed-off-by: Tomas Pilar <tomas.pilar@arm.com>
---
ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c | 35 +----------------------------------
ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h | 17 +++++++++++++++++
3 files changed, 76 insertions(+), 34 deletions(-)
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c
index a3160ed6f0a2..e866b84c6844 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c
@@ -48,13 +48,10 @@ DumpAcpiTableToFile (
IN CONST UINTN Length
)
{
- EFI_STATUS Status;
CHAR16 FileNameBuffer[MAX_FILE_NAME_LEN];
- SHELL_FILE_HANDLE DumpFileHandle;
UINTN TransferBytes;
SELECTED_ACPI_TABLE SelectedTable;
- DumpFileHandle = NULL;
TransferBytes = Length;
GetSelectedAcpiTable (&SelectedTable);
@@ -66,39 +63,9 @@ DumpAcpiTableToFile (
mBinTableCount++
);
- Status = ShellOpenFileByName (
- FileNameBuffer,
- &DumpFileHandle,
- EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE,
- 0
- );
- if (EFI_ERROR (Status)) {
- ShellPrintHiiEx (
- -1,
- -1,
- NULL,
- STRING_TOKEN (STR_GEN_READONLY_MEDIA),
- gShellAcpiViewHiiHandle,
- L"acpiview"
- );
- return FALSE;
- }
-
Print (L"Dumping ACPI table to : %s ... ", FileNameBuffer);
- Status = ShellWriteFile (
- DumpFileHandle,
- &TransferBytes,
- (VOID*)Ptr
- );
- if (EFI_ERROR (Status)) {
- Print (L"ERROR: Failed to dump table to binary file.\n");
- TransferBytes = 0;
- } else {
- Print (L"DONE.\n");
- }
-
- ShellCloseFile (&DumpFileHandle);
+ TransferBytes = DumpFile (FileNameBuffer, Ptr, Length);
return (Length == TransferBytes);
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c
index c3942ad24e5b..adf3cce6cfe2 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c
@@ -98,6 +98,64 @@ RegisterAllParsers (
return Status;
}
+/**
+ Dump a buffer to a file
+
+ @param[in] FileName The filename that shall be created to contain the buffer
+ @param[in] Buffer Pointer to buffer that shall be dumped
+ @param[in] BufferSize The size of buffer to be dumped in bytes
+
+ @return The number of bytes that were written
+**/
+UINTN
+EFIAPI
+DumpFile (
+ IN CONST CHAR16* FileNameBuffer,
+ IN CONST VOID* Buffer,
+ IN CONST UINTN BufferSize
+ )
+{
+ EFI_STATUS Status;
+ SHELL_FILE_HANDLE DumpFileHandle;
+ UINTN TransferBytes;
+
+ Status = ShellOpenFileByName (
+ FileNameBuffer,
+ &DumpFileHandle,
+ EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE,
+ 0
+ );
+
+ if (EFI_ERROR (Status)) {
+ ShellPrintHiiEx (
+ -1,
+ -1,
+ NULL,
+ STRING_TOKEN (STR_GEN_READONLY_MEDIA),
+ gShellAcpiViewHiiHandle,
+ L"acpiview"
+ );
+ return 0;
+ }
+
+ TransferBytes = BufferSize;
+ Status = ShellWriteFile (
+ DumpFileHandle,
+ &TransferBytes,
+ (VOID *) Buffer
+ );
+
+ if (EFI_ERROR (Status)) {
+ Print (L"ERROR: Failed to write binary file.\n");
+ TransferBytes = 0;
+ } else {
+ Print (L"DONE.\n");
+ }
+
+ ShellCloseFile (&DumpFileHandle);
+ return TransferBytes;
+}
+
/**
Return the file name of the help text file if not using HII.
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h
index a3a29164004d..9dd39cf4b3f0 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.h
@@ -10,6 +10,23 @@
extern EFI_HII_HANDLE gShellAcpiViewHiiHandle;
+/**
+ Dump a buffer to a file
+
+ @param[in] FileName The filename that shall be created to contain the buffer
+ @param[in] Buffer Pointer to buffer that shall be dumped
+ @param[in] BufferSize The size of buffer to be dumped in bytes
+
+ @return The number of bytes that were written
+**/
+UINTN
+EFIAPI
+DumpFile (
+ IN CONST CHAR16* FileNameBuffer,
+ IN CONST VOID* Buffer,
+ IN CONST UINTN BufferSize
+ );
+
/**
Function for 'acpiview' command.
--
2.24.1.windows.2
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
next prev parent reply other threads:[~2020-05-21 18:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-21 18:16 [PATCH v1 0/6] Standalone AcpiView Application Tomas Pilar (tpilar)
2020-05-21 18:16 ` [PATCH v1 1/6] ShellPkg/AcpiView: Move log reset to main method Tomas Pilar (tpilar)
2020-05-21 18:16 ` [PATCH v1 2/6] ShellPkg/AcpiView: Refactor configuration Tomas Pilar (tpilar)
2020-05-21 18:16 ` [PATCH v1 3/6] ShellPkg/AcpiView: Move table count reset Tomas Pilar (tpilar)
2020-05-21 18:16 ` [PATCH v1 4/6] ShellPkg/AcpiView: Move parameter parsing Tomas Pilar (tpilar)
2020-05-21 18:23 ` [edk2-devel] " Tomas Pilar (tpilar)
2020-05-21 18:16 ` Tomas Pilar (tpilar) [this message]
2020-05-21 18:16 ` [PATCH v1 6/6] ShellPkg/AcpiView: Add application wrapper Tomas Pilar (tpilar)
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=20200521181629.79-6-Tomas.Pilar@arm.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