1 /*++ 2 3 Copyright (c) 2004 - 2005, Intel Corporation. All rights reserved.<BR> 4 This program and the accompanying materials 5 are licensed and made available under the terms and conditions of the BSD License 6 which accompanies this distribution. The full text of the license may be found at 7 http://opensource.org/licenses/bsd-license.php 8 9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12 Module Name: 13 14 MonoStatusCode.h 15 16 Abstract: 17 18 Monolithic single PEIM to provide the status code functionality. 19 The PEIM is a blend of libraries that correspond to the different status code 20 listeners that a platform installs. 21 22 --*/ 23 24 #ifndef _MONO_STATUS_CODE_H_ 25 #define _MONO_STATUS_CODE_H_ 26 27 // 28 // Statements that include other files. 29 // 30 #include "Tiano.h" 31 #include "Pei.h" 32 #include "PeiLib.h" 33 #include "EfiCommonLib.h" 34 35 // 36 // Driver Produced DXE Protocol Prototypes 37 // 38 #include EFI_PPI_PRODUCER (StatusCode) 39 40 // 41 // Driver Consumed DXE Protocol Prototypes 42 // 43 #include EFI_ARCH_PROTOCOL_CONSUMER (StatusCode) 44 45 // 46 // Driver GUID includes 47 // 48 #include EFI_GUID_DEFINITION (StatusCode) 49 #include EFI_GUID_DEFINITION (StatusCodeCallerId) 50 #include EFI_GUID_DEFINITION (GlobalVariable) 51 52 extern EFI_GUID mStatusCodeRuntimeGuid; 53 54 // 55 // Platform specific function Declarations. These must be implemented in a 56 // subdirectory named PlatformName in a file named PlatformStatusCode.c. 57 // See D845GRG\PlatformStatusCode.c for an example of a simple status code 58 // implementation. 59 // See Nt32\PlatformStatusCode.c for an example of a status code implementation 60 // that relocates itself into memory. 61 // 62 // 63 // This is the driver entry point and must be defined. 64 // 65 EFI_STATUS 66 EFIAPI 67 InstallMonoStatusCode ( 68 IN EFI_FFS_FILE_HEADER *FfsHeader, 69 IN EFI_PEI_SERVICES **PeiServices 70 ); 71 72 // 73 // This is the platform function to initialize the listeners desired by the 74 // platform. 75 // 76 VOID 77 PlatformInitializeStatusCode ( 78 IN EFI_FFS_FILE_HEADER *FfsHeader, 79 IN EFI_PEI_SERVICES **PeiServices 80 ); 81 82 // 83 // This is the platform function that calls all of the listeners desired by the 84 // platform. 85 // 86 EFI_STATUS 87 EFIAPI 88 PlatformReportStatusCode ( 89 IN EFI_PEI_SERVICES **PeiServices, 90 IN EFI_STATUS_CODE_TYPE CodeType, 91 IN EFI_STATUS_CODE_VALUE Value, 92 IN UINT32 Instance, 93 IN EFI_GUID * CallerId, 94 IN EFI_STATUS_CODE_DATA * Data OPTIONAL 95 ); 96 97 // 98 // Platform independent function Declarations 99 // 100 // 101 // Initialize the status code listeners and publish the status code PPI. 102 // 103 VOID 104 EFIAPI 105 InitializeMonoStatusCode ( 106 IN EFI_FFS_FILE_HEADER *FfsHeader, 107 IN EFI_PEI_SERVICES **PeiServices 108 ); 109 110 // 111 // Convert a DXE status code call into a PEI status code call. 112 // 113 EFI_STATUS 114 EFIAPI 115 TranslateDxeStatusCodeToPeiStatusCode ( 116 IN EFI_STATUS_CODE_TYPE CodeType, 117 IN EFI_STATUS_CODE_VALUE Value, 118 IN UINT32 Instance, 119 IN EFI_GUID * CallerId, 120 IN EFI_STATUS_CODE_DATA * Data OPTIONAL 121 ); 122 123 // 124 // Publish a HOB that contains the listener to be used by DXE. 125 // 126 EFI_STATUS 127 EFIAPI 128 InitializeDxeReportStatusCode ( 129 IN EFI_PEI_SERVICES **PeiServices 130 ); 131 132 #endif 133