Re: [edk2] [PATCH V5 14/17] MdeModulePkg: Add definitions for EDKII DEBUG PPI

2019-03-28 Thread Gao, Zhichao
B stand for BASE_LIST, we use B instead of V because of compatible issue.
For VA_LIST, it may be a pointer or a structure depend on the compiler.
If some PEIMs consume V version function and it is compiled by a different 
compiler, they may catch these issue.

Thanks,
Zhichao

> -Original Message-
> From: Ni, Ray
> Sent: Thursday, March 28, 2019 6:13 PM
> To: Gao, Zhichao ; edk2-devel@lists.01.org
> Cc: Wang, Jian J ; Wu, Hao A ;
> Zeng, Star ; Gao, Liming ;
> Sean Brogan ; Michael Turner
> ; Bret Barkelew
> 
> Subject: RE: [PATCH V5 14/17] MdeModulePkg: Add definitions for EDKII
> DEBUG PPI
> 
> Zhichao,
> I see you added library API called DebugVPrint. Why the interface in the PPI
> is called DebugBPrint?
> What does "B" stand for? Why invent a "B" but not use "V"?
> 
> > -Original Message-
> > From: Gao, Zhichao 
> > Sent: Thursday, March 28, 2019 4:10 PM
> > To: edk2-devel@lists.01.org
> > Cc: Wang, Jian J ; Wu, Hao A
> > ; Ni, Ray ; Zeng, Star
> > ; Gao, Liming ; Sean Brogan
> > ; Michael Turner
> > ; Bret Barkelew
> > 
> > Subject: [PATCH V5 14/17] MdeModulePkg: Add definitions for EDKII
> > DEBUG PPI
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1549
> >
> > Add a debug PPI for PEI phase. This PPI will provide basic services of 
> > debug.
> > PEI debug lib instance can use these services to implement debug
> > function to reduce the PEIMs which consume the debug lib.
> >
> > Contributed-under: TianoCore Contribution Agreement 1.1
> > Signed-off-by: Zhichao Gao 
> > Cc: Jian J Wang 
> > Cc: Hao Wu 
> > Cc: Ray Ni 
> > Cc: Star Zeng 
> > Cc: Liming Gao 
> > Cc: Sean Brogan 
> > Cc: Michael Turner 
> > Cc: Bret Barkelew 
> > Reviewed-by: Hao Wu 
> > ---
> >  MdeModulePkg/Include/Ppi/Debug.h | 82
> > 
> >  MdeModulePkg/MdeModulePkg.dec|  3 ++
> >  2 files changed, 85 insertions(+)
> >  create mode 100644 MdeModulePkg/Include/Ppi/Debug.h
> >
> > diff --git a/MdeModulePkg/Include/Ppi/Debug.h
> > b/MdeModulePkg/Include/Ppi/Debug.h
> > new file mode 100644
> > index 00..0fb6a8fdc2
> > --- /dev/null
> > +++ b/MdeModulePkg/Include/Ppi/Debug.h
> > @@ -0,0 +1,82 @@
> > +/** @file
> > +  Define the EDKII_DEBUG_PPI that PEIMs can use to dump info to debug
> > port.
> > +
> > +  Copyright (c) 2019, Intel Corporation. All rights reserved.
> > +
> > +  This program and the accompanying materials  are licensed and made
> > + available under the terms and conditions  of the BSD License which
> > + accompanies this distribution.  The  full text of the license may be
> > + found at  http://opensource.org/licenses/bsd-license.php
> > +
> > +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> > BASIS,
> > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> > EXPRESS OR IMPLIED.
> > +
> > +**/
> > +
> > +#ifndef __EDKII_DEBUG_PPI_H__
> > +#define __EDKII_DEBUG_PPI_H__
> > +
> > +#include 
> > +
> > +//
> > +// Global ID for the EDKII_DEBUG_PPI
> > +//
> > +#define EDKII_DEBUG_PPI_GUID \
> > +  { \
> > +0x999e699c, 0xb013, 0x475e, {0xb1, 0x7b, 0xf3, 0xa8, 0xae, 0x5c,
> > +0x48, 0x75} \
> > +  }
> > +
> > +///
> > +/// Forward declaration for the PEI_DEBUG_LIB_DEBUG_PPI
> > EDKII_DEBUG_PPI
> > +/// typedef struct _EDKII_DEBUG_PPI EDKII_DEBUG_PPI;
> > +
> > +/**
> > +  Print a debug message to debug output device if the specified error
> > +level
> > +  is enabled.
> > +
> > +  @param[in] ErrorLevel   The error level of the debug message.
> > +  @param[in] Format   Format string for the debug message 
> > to
> print.
> > +  @param[in] Marker   BASE_LIST marker for the variable
> argument
> > list.
> > +
> > +**/
> > +typedef
> > +VOID
> > +(EFIAPI *EDKII_DEBUG_BPRINT)(
> > +  IN UINTN  ErrorLevel,
> > +  IN CONST CHAR8*Format,
> > +  IN BASE_LIST  Marker
> > +  );
> > +
> > +/**
> > +  Print an assert message containing a filename, line number, and
> > description.
> > +  This may be followed by a breakpoint or a dead loop.
> > +
> > +  @param[in] FileName The pointer to the name of the 
> > source file
> > that
> > +  generated the assert condition.
> > +  @param[in] LineNumber   The line number in the source file 
> > that
> > generated
> > +  the assert condition
> > +  @param[in] Description  The pointer to the description of the
> assert
> > condition.
> > +
> > +**/
> > +typedef
> > +VOID
> > +(EFIAPI *EDKII_DEBUG_ASSERT)(
> > +  IN CONST CHAR8*FileName,
> > +  IN UINTN  LineNumber,
> > +  IN CONST CHAR8*Description
> > +  );
> > +
> > +///
> > +/// This PPI contains a set of services to print message to debug
> > +output device /// struct _EDKII_DEBUG_PPI {
> > +  EDKII_DEBUG_BPRINTDebugBPrint;
> > +  EDKII_DEBUG_ASSERT   

Re: [edk2] [PATCH V5 14/17] MdeModulePkg: Add definitions for EDKII DEBUG PPI

2019-03-28 Thread Ni, Ray
Zhichao,
I see you added library API called DebugVPrint. Why the interface in the PPI is 
called DebugBPrint?
What does "B" stand for? Why invent a "B" but not use "V"?

> -Original Message-
> From: Gao, Zhichao 
> Sent: Thursday, March 28, 2019 4:10 PM
> To: edk2-devel@lists.01.org
> Cc: Wang, Jian J ; Wu, Hao A ;
> Ni, Ray ; Zeng, Star ; Gao, Liming
> ; Sean Brogan ;
> Michael Turner ; Bret Barkelew
> 
> Subject: [PATCH V5 14/17] MdeModulePkg: Add definitions for EDKII DEBUG
> PPI
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1549
> 
> Add a debug PPI for PEI phase. This PPI will provide basic services of debug.
> PEI debug lib instance can use these services to implement debug function to
> reduce the PEIMs which consume the debug lib.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Zhichao Gao 
> Cc: Jian J Wang 
> Cc: Hao Wu 
> Cc: Ray Ni 
> Cc: Star Zeng 
> Cc: Liming Gao 
> Cc: Sean Brogan 
> Cc: Michael Turner 
> Cc: Bret Barkelew 
> Reviewed-by: Hao Wu 
> ---
>  MdeModulePkg/Include/Ppi/Debug.h | 82
> 
>  MdeModulePkg/MdeModulePkg.dec|  3 ++
>  2 files changed, 85 insertions(+)
>  create mode 100644 MdeModulePkg/Include/Ppi/Debug.h
> 
> diff --git a/MdeModulePkg/Include/Ppi/Debug.h
> b/MdeModulePkg/Include/Ppi/Debug.h
> new file mode 100644
> index 00..0fb6a8fdc2
> --- /dev/null
> +++ b/MdeModulePkg/Include/Ppi/Debug.h
> @@ -0,0 +1,82 @@
> +/** @file
> +  Define the EDKII_DEBUG_PPI that PEIMs can use to dump info to debug
> port.
> +
> +  Copyright (c) 2019, Intel Corporation. All rights reserved.
> +
> +  This program and the accompanying materials  are licensed and made
> + available under the terms and conditions  of the BSD License which
> + accompanies this distribution.  The  full text of the license may be
> + found at  http://opensource.org/licenses/bsd-license.php
> +
> +  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
> + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
> +
> +**/
> +
> +#ifndef __EDKII_DEBUG_PPI_H__
> +#define __EDKII_DEBUG_PPI_H__
> +
> +#include 
> +
> +//
> +// Global ID for the EDKII_DEBUG_PPI
> +//
> +#define EDKII_DEBUG_PPI_GUID \
> +  { \
> +0x999e699c, 0xb013, 0x475e, {0xb1, 0x7b, 0xf3, 0xa8, 0xae, 0x5c,
> +0x48, 0x75} \
> +  }
> +
> +///
> +/// Forward declaration for the PEI_DEBUG_LIB_DEBUG_PPI
> EDKII_DEBUG_PPI
> +/// typedef struct _EDKII_DEBUG_PPI EDKII_DEBUG_PPI;
> +
> +/**
> +  Print a debug message to debug output device if the specified error
> +level
> +  is enabled.
> +
> +  @param[in] ErrorLevel   The error level of the debug message.
> +  @param[in] Format   Format string for the debug message to 
> print.
> +  @param[in] Marker   BASE_LIST marker for the variable 
> argument
> list.
> +
> +**/
> +typedef
> +VOID
> +(EFIAPI *EDKII_DEBUG_BPRINT)(
> +  IN UINTN  ErrorLevel,
> +  IN CONST CHAR8*Format,
> +  IN BASE_LIST  Marker
> +  );
> +
> +/**
> +  Print an assert message containing a filename, line number, and
> description.
> +  This may be followed by a breakpoint or a dead loop.
> +
> +  @param[in] FileName The pointer to the name of the source 
> file
> that
> +  generated the assert condition.
> +  @param[in] LineNumber   The line number in the source file that
> generated
> +  the assert condition
> +  @param[in] Description  The pointer to the description of the 
> assert
> condition.
> +
> +**/
> +typedef
> +VOID
> +(EFIAPI *EDKII_DEBUG_ASSERT)(
> +  IN CONST CHAR8*FileName,
> +  IN UINTN  LineNumber,
> +  IN CONST CHAR8*Description
> +  );
> +
> +///
> +/// This PPI contains a set of services to print message to debug
> +output device /// struct _EDKII_DEBUG_PPI {
> +  EDKII_DEBUG_BPRINTDebugBPrint;
> +  EDKII_DEBUG_ASSERTDebugAssert;
> +};
> +
> +extern EFI_GUID gEdkiiDebugPpiGuid;
> +
> +#endif
> +
> diff --git a/MdeModulePkg/MdeModulePkg.dec
> b/MdeModulePkg/MdeModulePkg.dec index a2130bc439..9bbd0572f5
> 100644
> --- a/MdeModulePkg/MdeModulePkg.dec
> +++ b/MdeModulePkg/MdeModulePkg.dec
> @@ -492,6 +492,9 @@
>## Include/Ppi/AtaPassThru.h
>gEdkiiPeiAtaPassThruPpiGuid   = { 0xa16473fd, 0xd474, 0x4c89, 
> { 0xae,
> 0xc7, 0x90, 0xb8, 0x3c, 0x73, 0x86, 0x9  } }
> 
> +  ## Include/Ppi/Debug.h
> +  gEdkiiDebugPpiGuid= { 0x999e699c, 0xb013, 0x475e, 
> { 0xb1,
> 0x7b, 0xf3, 0xa8, 0xae, 0x5c, 0x48, 0x75 } }
> +
>  [Protocols]
>## Load File protocol provides capability to load and unload EFI image into
> memory and execute it.
>#  Include/Protocol/LoadPe32Image.h
> --
> 2.21.0.windows.1

___