## @file
#  Status Code Handler Driver which produces general handlers and hook them
#  onto the DXE status code router.
#
#  Copyright (c) 2006 - 2011, 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                      = StatusCodeHandlerRuntimeDxe
  FILE_GUID                      = 6C2004EF-4E0E-4BE4-B14C-340EB4AA5891
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = StatusCodeHandlerRuntimeDxeEntry

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  StatusCodeHandlerRuntimeDxe.c
  StatusCodeHandlerRuntimeDxe.h
  SerialStatusCodeWorker.c
  MemoryStatusCodeWorker.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  SerialPortLib
  UefiRuntimeLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  HobLib
  PcdLib
  PrintLib
  ReportStatusCodeLib
  DebugLib
  SynchronizationLib
  BaseMemoryLib
  
[Guids]
  gMemoryStatusCodeRecordGuid                   ## CONSUMES ## HOB
  gEfiEventVirtualAddressChangeGuid             ## CONSUMES ## Event
  gEfiEventExitBootServicesGuid                 ## CONSUMES ## Event
  gEfiStatusCodeDataTypeStringGuid              ## CONSUMES

[Protocols]
  gEfiRscHandlerProtocolGuid                    ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeReplayIn
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize |128| gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory

[Depex]
  gEfiRscHandlerProtocolGuid
