Reviewed-by: Star Zeng <star.z...@intel.com> to MdeModulePkg changes.

Thanks,
Star
-----Original Message-----
From: Tian, Feng 
Sent: Thursday, October 27, 2016 9:17 AM
To: Laszlo Ersek <ler...@redhat.com>; edk2-devel-01 <edk2-de...@ml01.01.org>
Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>; Cecil Sheng 
<cecil.sh...@hpe.com>; Zhang, Chao B <chao.b.zh...@intel.com>; Bi, Dandan 
<dandan...@intel.com>; Daryl McDaniel <edk2-li...@mc2research.org>; Wei, David 
<david....@intel.com>; Dong, Eric <eric.d...@intel.com>; Gary Lin 
<g...@suse.com>; Carsey, Jaben <jaben.car...@intel.com>; Fan, Jeff 
<jeff....@intel.com>; Wu, Jiaxin <jiaxin...@intel.com>; Justen, Jordan L 
<jordan.l.jus...@intel.com>; Gao, Liming <liming....@intel.com>; Kinney, 
Michael D <michael.d.kin...@intel.com>; Ni, Ruiyu <ruiyu...@intel.com>; Fu, 
Siyuan <siyuan...@intel.com>; Zeng, Star <star.z...@intel.com>; Tim He 
<tim...@intel.com>; Tian, Feng <feng.t...@intel.com>
Subject: RE: [PATCH 00/47] edk2: centralize and adopt ARRAY_SIZE()

MdeModulePkg

reviewed-by: Feng Tian <feng.t...@intel.com>

Thanks
Feng

-----Original Message-----
From: Laszlo Ersek [mailto:ler...@redhat.com] 
Sent: Thursday, October 27, 2016 3:04 AM
To: edk2-devel-01 <edk2-de...@ml01.01.org>
Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>; Cecil Sheng 
<cecil.sh...@hpe.com>; Zhang, Chao B <chao.b.zh...@intel.com>; Bi, Dandan 
<dandan...@intel.com>; Daryl McDaniel <edk2-li...@mc2research.org>; Wei, David 
<david....@intel.com>; Dong, Eric <eric.d...@intel.com>; Tian, Feng 
<feng.t...@intel.com>; Gary Lin <g...@suse.com>; Carsey, Jaben 
<jaben.car...@intel.com>; Fan, Jeff <jeff....@intel.com>; Wu, Jiaxin 
<jiaxin...@intel.com>; Justen, Jordan L <jordan.l.jus...@intel.com>; Gao, 
Liming <liming....@intel.com>; Kinney, Michael D <michael.d.kin...@intel.com>; 
Ni, Ruiyu <ruiyu...@intel.com>; Fu, Siyuan <siyuan...@intel.com>; Zeng, Star 
<star.z...@intel.com>; Tim He <tim...@intel.com>
Subject: [PATCH 00/47] edk2: centralize and adopt ARRAY_SIZE()

I'm sure most of us have wished at some point that ARRAY_SIZE() had existed in 
a central header file, like it does in many other open source projects. This 
series implements that.

Patches 01-04 round up the modules that #define ARRAY_SIZE() just for 
themselves, and wrap their definitions in #ifndef ARRAY_SIZE.

Patch 05 defines ARRAY_SIZE() in "MdePkg/Include/Base.h". This flips the 
previously modified modules to MdePkg's macro definition.

Patches 06-09 modify the same set of modules as patches 01-04 do; this time the 
(now unused) module-local ARRAY_SIZE() macro definitions are eliminated.

The rest of the patches (10-47) migrate the edk2 tree to ARRAY_SIZE(), covering 
the most obvious open-coded ARRAY_SIZE() expressions. These expressions were 
located and converted with the following shell
pipeline:

  git ls-files \
  | xargs --no-run-if-empty -- \
      sed --regexp-extended --in-place \
        --expression='s,sizeof \(([a-zA-Z0-9_]+)\) / sizeof 
\((\*\1|\1\[0\])\),ARRAY_SIZE (\1),g' \
        --

This pipeline lists all tracked files with "git". The pathnames are then 
composed with "xargs" into maximal length "sed" command lines, and those "sed" 
commands are run.

Here the "sed" stream editor filters and modifies all the listed files in 
place. The extended regular expression replaces the following two
patterns:

  sizeof (ArrayName) / sizeof (*ArrayName)
  sizeof (ArrayName) / sizeof (ArrayName[0])

with

  ARRAY_SIZE (ArrayName)

The regexp uses a backreference in the match, ensuring that the sizeof operator 
in the dividend and the sizeof operator in the divisor both refer to the same 
ArrayName. If there are multiple occurrences on the same line, the sed command 
replaces all of them.

I collected the changes into patches manually, and I reviewed them all.

I test-built all of the modified packages, repeating the command

  build -a X64 -t GCC48 -b DEBUG -p FooPkg/FooPkg.dsc

as many times as necessary. Two packages were impossible to build like
this: Nt32Pkg and Vlv2TbltDevicePkg, so I couldn't build-test them.

I did some light-weight testing with OVMF: boot with Secure Boot enabled, S3 
suspend/resume with and without SMM. I also booted ArmVirtQemu once.

Repository: https://github.com/lersek/edk2.git
Branch:     array_size

Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
Cc: Cecil Sheng <cecil.sh...@hpe.com>
Cc: Chao Zhang <chao.b.zh...@intel.com>
Cc: Dandan Bi <dandan...@intel.com>
Cc: Daryl McDaniel <edk2-li...@mc2research.org>
Cc: David Wei <david....@intel.com>
Cc: Eric Dong <eric.d...@intel.com>
Cc: Feng Tian <feng.t...@intel.com>
Cc: Gary Lin <g...@suse.com>
Cc: Jaben Carsey <jaben.car...@intel.com>
Cc: Jeff Fan <jeff....@intel.com>
Cc: Jiaxin Wu <jiaxin...@intel.com>
Cc: Jordan Justen <jordan.l.jus...@intel.com>
Cc: Liming Gao <liming....@intel.com>
Cc: Michael D Kinney <michael.d.kin...@intel.com>
Cc: Ruiyu Ni <ruiyu...@intel.com>
Cc: Siyuan Fu <siyuan...@intel.com>
Cc: Star Zeng <star.z...@intel.com>
Cc: Tim He <tim...@intel.com>

Thanks
Laszlo

Laszlo Ersek (47):
  MdeModulePkg/RegularExpressionDxe: guard the definition of ARRAY_SIZE
  NetworkPkg/IpsecConfig: guard the definition of ARRAY_SIZE
  OvmfPkg/PlatformBootManagerLib: guard the definition of ARRAY_SIZE
  OvmfPkg/XenBusDxe: guard the definition of ARRAY_SIZE
  MdePkg/Include/Base.h: introduce the ARRAY_SIZE() function-like macro
  MdeModulePkg/RegularExpressionDxe: remove module-local ARRAY_SIZE
    macro
  NetworkPkg/IpsecConfig: remove module-local ARRAY_SIZE macro
  OvmfPkg/PlatformBootManagerLib: remove module-local ARRAY_SIZE macro
  OvmfPkg/XenBusDxe: remove module-local ARRAY_SIZE macro
  ArmVirtPkg/NorFlashQemuLib: rebase to ARRAY_SIZE()
  DuetPkg/DuetBdsLib: rebase to ARRAY_SIZE()
  EdkCompatibilityPkg/FrameworkHiiOnUefiHiiThunk: rebase to ARRAY_SIZE()
  EdkCompatibilityPkg/Sample/Tools: rebase to ARRAY_SIZE()
  FatPkg/EnhancedFatDxe: rebase to ARRAY_SIZE()
  IntelFrameworkModulePkg/LegacyBootManagerLib: rebase to ARRAY_SIZE()
  IntelFrameworkModulePkg/BdsDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/MemoryProfileInfo: rebase to ARRAY_SIZE()
  MdeModulePkg/PciBusDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/PciHostBridgeDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/UsbBusDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/Core/Dxe: rebase to ARRAY_SIZE()
  MdeModulePkg/Core/PiSmmCore: rebase to ARRAY_SIZE()
  MdeModulePkg/BootMaintenanceManagerUiLib: rebase to ARRAY_SIZE()
  MdeModulePkg/BootManagerUiLib: rebase to ARRAY_SIZE()
  MdeModulePkg/UefiBootManagerLib: rebase to ARRAY_SIZE()
  MdeModulePkg/VarCheckHiiLib: rebase to ARRAY_SIZE()
  MdeModulePkg/Logo: rebase to ARRAY_SIZE()
  MdeModulePkg/BdsDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/DisplayEngineDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/EbcDxe: rebase to ARRAY_SIZE()
  MdeModulePkg/Tcp4Dxe: rebase to ARRAY_SIZE()
  MdeModulePkg/Variable/RuntimeDxe: rebase to ARRAY_SIZE()
  NetworkPkg/IScsiDxe: rebase to ARRAY_SIZE()
  NetworkPkg/TcpDxe: rebase to ARRAY_SIZE()
  Nt32Pkg/WinNtSerialIoDxe: rebase to ARRAY_SIZE()
  OptionRomPkg/AtapiPassThruDxe: rebase to ARRAY_SIZE()
  OvmfPkg/QemuBootOrderLib: rebase to ARRAY_SIZE()
  OvmfPkg/QemuVideoDxe: rebase to ARRAY_SIZE()
  PerformancePkg/Dp_App: rebase to ARRAY_SIZE()
  SecurityPkg/AuthVariableLib: rebase to ARRAY_SIZE()
  ShellPkg/UefiDpLib: rebase to ARRAY_SIZE()
  ShellPkg/UefiShellLevel2CommandsLib: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/FirmwareUpdate: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/PlatformInitPei: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/PlatformPei: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/PlatformSetupDxe: rebase to ARRAY_SIZE()
  Vlv2TbltDevicePkg/SmBiosMiscDxe: rebase to ARRAY_SIZE()

 ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.c                          
|  2 +-
 DuetPkg/Library/DuetBdsLib/BdsPlatform.c                                      
|  2 +-
 EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/OpcodeCreation.c 
|  2 +-
 EdkCompatibilityPkg/Sample/Tools/Source/EfiRom/EfiRom.c                       
|  4 ++--
 EdkCompatibilityPkg/Sample/Tools/Source/HiiPack/IfrParse.c                    
|  2 +-
 FatPkg/EnhancedFatDxe/DirectoryManage.c                                       
|  4 ++--
 FatPkg/EnhancedFatDxe/FileName.c                                              
|  4 ++--
 FatPkg/EnhancedFatDxe/Hash.c                                                  
|  4 ++--
 IntelFrameworkModulePkg/Library/LegacyBootManagerLib/LegacyBm.c               
|  2 +-
 IntelFrameworkModulePkg/Universal/BdsDxe/BdsEntry.c                           
|  2 +-
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BBSsupport.c               
|  4 ++--
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c                
|  8 ++++----
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootOption.c               
|  2 +-
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/ConsoleOption.c            
|  6 +++---
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c               
| 10 +++++-----
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/Variable.c                 
|  2 +-
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMngr/BootManager.c               
|  2 +-
 MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c                
|  6 +++---
 MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c                                       
|  2 +-
 MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c                         
|  2 +-
 MdeModulePkg/Bus/Usb/UsbBusDxe/UsbHub.c                                       
|  4 ++--
 MdeModulePkg/Core/Dxe/Mem/Pool.c                                              
|  2 +-
 MdeModulePkg/Core/PiSmmCore/Pool.c                                            
|  2 +-
 MdeModulePkg/Core/PiSmmCore/SmramProfileRecord.c                              
|  6 +++---
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c            
|  8 ++++----
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/ConsoleOption.c              
|  8 ++++----
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c                 
| 12 ++++++------
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/Variable.c                   
|  2 +-
 MdeModulePkg/Library/BootManagerUiLib/BootManager.c                           
|  6 +++---
 MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c                   
|  2 +-
 MdeModulePkg/Library/UefiBootManagerLib/BmConsole.c                           
|  2 +-
 MdeModulePkg/Library/UefiBootManagerLib/BmHotkey.c                            
|  2 +-
 MdeModulePkg/Library/UefiBootManagerLib/BmLoadOption.c                        
|  4 ++--
 MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c                          
|  4 ++--
 MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiLibNullClass.c                 
|  2 +-
 MdeModulePkg/Logo/Logo.c                                                      
|  2 +-
 MdeModulePkg/Universal/BdsDxe/BdsEntry.c                                      
|  2 +-
 MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c                         
|  4 ++--
 MdeModulePkg/Universal/DisplayEngineDxe/InputHandler.c                        
|  6 +++---
 MdeModulePkg/Universal/EbcDxe/EbcExecute.c                                    
|  2 +-
 MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Output.c                           
|  2 +-
 MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.h            
|  2 --
 MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c                         
|  2 +-
 MdePkg/Include/Base.h                                                         
| 13 +++++++++++++
 NetworkPkg/Application/IpsecConfig/IpSecConfig.h                              
|  2 --
 NetworkPkg/IScsiDxe/IScsiConfig.c                                             
|  4 ++--
 NetworkPkg/IScsiDxe/IScsiDriver.c                                             
|  2 +-
 NetworkPkg/IScsiDxe/IScsiMisc.c                                               
|  6 +++---
 NetworkPkg/TcpDxe/TcpOutput.c                                                 
|  2 +-
 Nt32Pkg/WinNtSerialIoDxe/WinNtSerialIo.c                                      
|  2 +-
 OptionRomPkg/AtapiPassThruDxe/AtapiPassThru.c                                 
|  4 ++--
 OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c                          
|  5 -----
 OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c                           
| 12 ++++++------
 OvmfPkg/QemuVideoDxe/Initialize.c                                             
|  4 ++--
 OvmfPkg/XenBusDxe/XenStore.c                                                  
|  1 -
 PerformancePkg/Dp_App/Dp.c                                                    
|  2 +-
 PerformancePkg/Dp_App/DpTrace.c                                               
| 10 +++++-----
 SecurityPkg/Library/AuthVariableLib/AuthVariableLib.c                         
|  4 ++--
 ShellPkg/Library/UefiDpLib/DpTrace.c                                          
| 10 +++++-----
 ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c                        
|  2 +-
 Vlv2TbltDevicePkg/Application/FirmwareUpdate/FirmwareUpdate.c                 
|  2 +-
 Vlv2TbltDevicePkg/PlatformInitPei/FlashMap.c                                  
|  2 +-
 Vlv2TbltDevicePkg/PlatformPei/BootMode.c                                      
|  6 +++---
 Vlv2TbltDevicePkg/PlatformSetupDxe/SetupInfoRecords.c                         
|  2 +-
 Vlv2TbltDevicePkg/SmBiosMiscDxe/MiscOemType0x94Function.c                     
|  2 +-
 65 files changed, 131 insertions(+), 128 deletions(-)

--
2.9.2

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to