## @file
#  Performance library instance used in DXE phase to dump SMM performance data.
#  
#  This library instance allows a DXE driver or UEFI application to dump both PEI/DXE and SMM performance data.
#  StartPerformanceMeasurement(), EndPerformanceMeasurement(), StartPerformanceMeasurementEx()
#  and EndPerformanceMeasurementEx() are not implemented.
#  
#  Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
#  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.
#  
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = DxeSmmPerformanceLib
  MODULE_UNI_FILE                = DxeSmmPerformanceLib.uni
  FILE_GUID                      = DA80C15C-0B4D-4e75-8946-4043DE559B0C
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = PerformanceLib|DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  DxeSmmPerformanceLib.c


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseLib
  UefiBootServicesTableLib
  PcdLib
  DebugLib
  BaseMemoryLib
  UefiRuntimeServicesTableLib
  MemoryAllocationLib
  UefiLib

[Guids]
  gPerformanceProtocolGuid              ## SOMETIMES_CONSUMES   ## UNDEFINED # Locate protocol
  gPerformanceExProtocolGuid            ## SOMETIMES_CONSUMES   ## UNDEFINED # Locate protocol
  gSmmPerformanceProtocolGuid           ## SOMETIMES_PRODUCES   ## UNDEFINED # Used to do smm communication
  gSmmPerformanceExProtocolGuid         ## SOMETIMES_PRODUCES   ## UNDEFINED # Used to do smm communication
  gEdkiiPiSmmCommunicationRegionTableGuid    ## CONSUMES ## SystemTable

[Protocols]
  gEfiSmmCommunicationProtocolGuid      ## CONSUMES


[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask    ## CONSUMES

[Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER]
  gEfiSmmCommunicationProtocolGuid
