Baranee,

I also think the following line could be changed for smaller code gen from:

+  ModuleNameSize   = AsciiStrLen("[") + AsciiStrLen (gEfiCallerBaseName) + 
AsciiStrLen("] ");

To:

+  //
+  // Compute string size of module name enclosed by []
+  //
+  ModuleNameSize   = 2 + AsciiStrSize (gEfiCallerBaseName);

Mike

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Gao, 
> Liming
> Sent: Wednesday, December 2, 2015 6:07 PM
> To: Anbazhagan, Baraneedharan <anbazha...@hp.com>; edk2-devel@lists.01.org
> Subject: Re: [edk2] MdeModulePkg: DebugAssert enhancement
> 
> Baranee:
>   Could you use CopyMem() to fill gEfiCallerBaseName instead of 
> AsciiSPrint()? This library instance is for size optimization. So, it uses
> CopyMem() to fill FileName and Description.
> 
> Thanks
> Liming
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of 
> Anbazhagan, Baraneedharan
> Sent: Wednesday, December 02, 2015 11:42 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] MdeModulePkg: DebugAssert enhancement
> 
> If the assert happens in a library, then it's hard to determine which module 
> using that library is generating that assert.
> Use gEfiCallerBaseName in DebugAssert to display the module name.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Baraneedharan Anbazhagan <anbazha...@hp.com>
> ---
>  .../PeiDxeDebugLibReportStatusCode/DebugLib.c      | 58 
> ++++++++++++++--------
>  .../PeiDxeDebugLibReportStatusCode.inf             |  1 +
>  2 files changed, 39 insertions(+), 20 deletions(-)
> 
> diff --git a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> index f1d9827..af369ea 100644
> --- a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> +++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> @@ -22,6 +22,7 @@
> 
>  #include <Library/DebugLib.h>
>  #include <Library/BaseLib.h>
> +#include <Library/PrintLib.h>
>  #include <Library/BaseMemoryLib.h>
>  #include <Library/ReportStatusCodeLib.h>  #include <Library/PcdLib.h> @@ 
> -261,6 +262,7 @@ DebugAssert (
>    UINTN                  HeaderSize;
>    UINTN                  TotalSize;
>    CHAR8                  *Temp;
> +  UINTN                  ModuleNameSize;
>    UINTN                  FileNameSize;
>    UINTN                  DescriptionSize;
> 
> @@ -268,31 +270,37 @@ DebugAssert (
>    // Get string size
>    //
>    HeaderSize       = sizeof (EFI_DEBUG_ASSERT_DATA);
> +  ModuleNameSize   = AsciiStrLen("[") + AsciiStrLen (gEfiCallerBaseName) + 
> AsciiStrLen("] ");
>    FileNameSize     = AsciiStrSize (FileName);
>    DescriptionSize  = AsciiStrSize (Description);
> 
>    //
>    // Make sure it will all fit in the passed in buffer.
>    //
> -  if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer)) {
> +  if (HeaderSize + ModuleNameSize + FileNameSize + DescriptionSize >
> + sizeof (Buffer)) {
>      //
> -    // FileName + Description is too long to be filled into buffer.
> +    // remove module name if it's too long to be filled into buffer
>      //
> -    if (HeaderSize + FileNameSize < sizeof (Buffer)) {
> +    ModuleNameSize = 0;
> +    if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer))
> + {
>        //
> -      // Description has enough buffer to be truncated.
> +      // FileName + Description is too long to be filled into buffer.
>        //
> -      DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;
> -    } else {
> -      //
> -      // FileName is too long to be filled into buffer.
> -      // FileName will be truncated. Reserved one byte for Description NULL 
> terminator.
> -      //
> -      DescriptionSize = 1;
> -      FileNameSize    = sizeof (Buffer) - HeaderSize - DescriptionSize;
> +      if (HeaderSize + FileNameSize < sizeof (Buffer)) {
> +        //
> +        // Description has enough buffer to be truncated.
> +        //
> +        DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;
> +      } else {
> +        //
> +        // FileName is too long to be filled into buffer.
> +        // FileName will be truncated. Reserved one byte for Description 
> NULL terminator.
> +        //
> +        DescriptionSize = 1;
> +        FileNameSize    = sizeof (Buffer) - HeaderSize - DescriptionSize;
> +      }
>      }
>    }
> -
>    //
>    // Fill in EFI_DEBUG_ASSERT_DATA
>    //
> @@ -300,17 +308,27 @@ DebugAssert (
>    AssertData->LineNumber = (UINT32)LineNumber;
>    TotalSize  = sizeof (EFI_DEBUG_ASSERT_DATA);
> 
> -  //
> -  // Copy Ascii FileName including NULL terminator.
> -  //
> -  Temp = CopyMem (AssertData + 1, FileName, FileNameSize);
> -  Temp[FileNameSize - 1] = 0;
> -  TotalSize += FileNameSize;
> +  Temp = (CHAR8 *)(AssertData + 1);
> +  if (ModuleNameSize != 0) {
> +    //
> +    // Copy Ascii ModuleName & FileName including NULL terminator
> +    //
> +    AsciiSPrint(Temp, ModuleNameSize + FileNameSize, "[%a] %a", 
> gEfiCallerBaseName, FileName);
> +    TotalSize += (ModuleNameSize + FileNameSize);  } else {
> +    //
> +    // Copy Ascii FileName including NULL terminator.
> +    //
> +    Temp = CopyMem (Temp, FileName, FileNameSize);
> +    Temp[FileNameSize - 1] = 0;
> +    TotalSize += FileNameSize;
> +  }
> +
> 
>    //
>    // Copy Ascii Description include NULL terminator.
>    //
> -  Temp = CopyMem (Temp + FileNameSize, Description, DescriptionSize);
> +  Temp = CopyMem (Temp + ModuleNameSize + FileNameSize, Description, 
> DescriptionSize);
>    Temp[DescriptionSize - 1] = 0;
>    TotalSize += DescriptionSize;
> 
> diff --git 
> a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
> b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
> index 5544667..50f60c7 100644
> --- 
> a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
> +++ 
> b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
> @@ -43,6 +43,7 @@
>    BaseMemoryLib
>    BaseLib
>    DebugPrintErrorLevelLib
> +  PrintLib
> 
>  [Pcd]
>    gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue  ## SOMETIMES_CONSUMES
> --
> 2.6.3.windows.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to