public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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.

  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