Thanks. I will send updated code change for the same library in 
IntelFrameworkModulePkg.

> -----Original Message-----
> From: Gao, Liming [mailto:[email protected]]
> Sent: Friday, December 04, 2015 3:32 AM
> To: Anbazhagan, Baraneedharan; Kinney, Michael D; [email protected]
> Subject: RE: MdeModulePkg: DebugAssert enhancement
> 
> Reviewed-by: Liming Gao <[email protected]>
> 
> I would like to help commit your serial patches if no other comments.
> 
> Thanks
> Liming
> -----Original Message-----
> From: Anbazhagan, Baraneedharan [mailto:[email protected]]
> Sent: Friday, December 04, 2015 1:13 AM
> To: Kinney, Michael D; Gao, Liming; [email protected]
> Subject: RE: MdeModulePkg: DebugAssert enhancement
> 
> Updated code based on your suggestion to use copy mem and ModuleNameSize
> calculation.
> 
> 
> diff --git a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> index f1d9827..c3010df 100644
> --- a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> +++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/DebugLib.c
> @@ -261,6 +261,7 @@ DebugAssert (
>    UINTN                  HeaderSize;
>    UINTN                  TotalSize;
>    CHAR8                  *Temp;
> +  UINTN                  ModuleNameSize;
>    UINTN                  FileNameSize;
>    UINTN                  DescriptionSize;
> 
> @@ -268,31 +269,40 @@ DebugAssert (
>    // Get string size
>    //
>    HeaderSize       = sizeof (EFI_DEBUG_ASSERT_DATA);
> +  //
> +  // Compute string size of module name enclosed by []  //
> +  ModuleNameSize   = 2 + AsciiStrSize (gEfiCallerBaseName);
>    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)) {
> -      //
> -      // Description has enough buffer to be truncated.
> -      //
> -      DescriptionSize = sizeof (Buffer) - HeaderSize - FileNameSize;
> -    } else {
> +    ModuleNameSize = 0;
> +    if (HeaderSize + FileNameSize + DescriptionSize > sizeof (Buffer))
> + {
>        //
> -      // FileName is too long to be filled into buffer.
> -      // FileName will be truncated. Reserved one byte for Description NULL 
> terminator.
> +      // FileName + Description is too long to be filled into buffer.
>        //
> -      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,12 +310,23 @@ DebugAssert (
>    AssertData->LineNumber = (UINT32)LineNumber;
>    TotalSize  = sizeof (EFI_DEBUG_ASSERT_DATA);
> 
> +  Temp = (CHAR8 *)(AssertData + 1);
> +
> +  //
> +  // Copy Ascii [ModuleName].
> +  //
> +  if (ModuleNameSize != 0) {
> +    CopyMem(Temp, "[", 1);
> +    CopyMem(Temp + 1, gEfiCallerBaseName, ModuleNameSize - 3);
> +    CopyMem(Temp + ModuleNameSize - 2, "] ", 2);  }
> +
>    //
>    // Copy Ascii FileName including NULL terminator.
>    //
> -  Temp = CopyMem (AssertData + 1, FileName, FileNameSize);
> +  Temp = CopyMem (Temp + ModuleNameSize, FileName, FileNameSize);
>    Temp[FileNameSize - 1] = 0;
> -  TotalSize += FileNameSize;
> +  TotalSize += (ModuleNameSize + FileNameSize);
> 
>    //
>    // Copy Ascii Description include NULL terminator.
> --
> 2.6.3.windows.1
> 
> 
> > -----Original Message-----
> > From: Kinney, Michael D [mailto:[email protected]]
> > Sent: Wednesday, December 02, 2015 8:22 PM
> > To: Gao, Liming; Anbazhagan, Baraneedharan; [email protected];
> > Kinney, Michael D
> > Subject: RE: MdeModulePkg: DebugAssert enhancement
> >
> > 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:[email protected]] On Behalf
> > > Of Gao, Liming
> > > Sent: Wednesday, December 2, 2015 6:07 PM
> > > To: Anbazhagan, Baraneedharan <[email protected]>;
> > > [email protected]
> > > 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:[email protected]] On Behalf
> > > Of Anbazhagan, Baraneedharan
> > > Sent: Wednesday, December 02, 2015 11:42 PM
> > > To: [email protected]
> > > 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 <[email protected]>
> > > ---
> > >  .../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/PeiDxeDebugLib
> > > Re
> > > portStatusCode.inf
> > > b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLib
> > > Re
> > > portStatusCode.inf
> > > index 5544667..50f60c7 100644
> > > ---
> > > a/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLib
> > > Re
> > > portStatusCode.inf
> > > +++ b/MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebu
> > > +++ gL
> > > +++ ibReportStatusCode.inf
> > > @@ -43,6 +43,7 @@
> > >    BaseMemoryLib
> > >    BaseLib
> > >    DebugPrintErrorLevelLib
> > > +  PrintLib
> > >
> > >  [Pcd]
> > >    gEfiMdePkgTokenSpaceGuid.PcdDebugClearMemoryValue  ##
> > > SOMETIMES_CONSUMES
> > > --
> > > 2.6.3.windows.1
> > >
> > > _______________________________________________
> > > edk2-devel mailing list
> > > [email protected]
> > > https://lists.01.org/mailman/listinfo/edk2-devel
> > > _______________________________________________
> > > edk2-devel mailing list
> > > [email protected]
> > > https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to