--- /dev/null
+/** @file\r
+Module produce EFI_PEI_READ_ONLY_VARIABLE2_PPI on top of EFI_PEI_READ_ONLY_VARIABLE_PPI.\r
+UEFI PI Spec supersedes Intel's Framework Specs. \r
+EFI_PEI_READ_ONLY_VARIABLE_PPI defined in Intel Framework Pkg is replaced by EFI_PEI_READ_ONLY_VARIABLE2_PPI\r
+in MdePkg.\r
+This module produces EFI_PEI_READ_ONLY_VARIABLE2_PPI on top of EFI_PEI_READ_ONLY_VARIABLE_PPI. \r
+This module is used on platform when both of these two conditions are true:\r
+1) Framework module produces EFI_PEI_READ_ONLY_VARIABLE_PPI is present.\r
+2) The platform has PI modules that only consumes EFI_PEI_READ_ONLY_VARIABLE2_PPI.\r
+\r
+This module can't be used together with ReadOnlyVariableToReadOnlyVariable2Thunk module.\r
+\r
+\r
+Copyright (c) 2006 - 2008 Intel Corporation. <BR>\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Module Name:\r
+\r
+**/\r
+\r
+#include <PiPei.h>\r
+#include <Ppi/ReadOnlyVariable2.h>\r
+#include <Ppi/ReadOnlyVariable.h>\r
+#include <Ppi/ReadOnlyVariableThunkPresent.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/PeiServicesTablePointerLib.h>\r
+#include <Library/PeiServicesLib.h>\r
+\r
+//\r
+// Function Prototypes\r
+//\r
+EFI_STATUS\r
+EFIAPI\r
+PeiGetVariable (\r
+ IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,\r
+ IN CONST CHAR16 *VariableName,\r
+ IN CONST EFI_GUID *VariableGuid,\r
+ OUT UINT32 *Attributes,\r
+ IN OUT UINTN *DataSize,\r
+ OUT VOID *Data\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+PeiGetNextVariableName (\r
+ IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,\r
+ IN OUT UINTN *VariableNameSize,\r
+ IN OUT CHAR16 *VariableName,\r
+ IN OUT EFI_GUID *VariableGuid\r
+ );\r
+\r
+//\r
+// Module globals\r
+//\r
+EFI_PEI_READ_ONLY_VARIABLE2_PPI mVariablePpi = {\r
+ PeiGetVariable,\r
+ PeiGetNextVariableName\r
+};\r
+\r
+EFI_PEI_PPI_DESCRIPTOR mPpiListVariable = {\r
+ (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
+ &gEfiPeiReadOnlyVariable2PpiGuid,\r
+ &mVariablePpi\r
+};\r
+\r
+\r
+EFI_PEI_PPI_DESCRIPTOR mReadOnlyVariableThunkPresent = {\r
+ (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
+ &gPeiReadonlyVariableThunkPresentPpiGuid,\r
+ NULL\r
+};\r
+\r
+/**\r
+ User entry for this PEIM driver.\r
+ \r
+ @param FileHandle Handle of the file being invoked.\r
+ @param PeiServices Describes the list of possible PEI Services.\r
+\r
+ @retval EFI_SUCCESS ReadOnlyVariable2 PPI is successfully installed.\r
+ @return Others ReadOnlyVariable2 PPI is not successfully installed.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PeimInitializeReadOnlyVariable2 (\r
+ IN EFI_PEI_FILE_HANDLE FfsHeader,\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
+ )\r
+{\r
+ VOID *Interface;\r
+ EFI_STATUS Status;\r
+ //\r
+ // This thunk module can only be used together with a PI PEI core, as we \r
+ // assume PeiServices Pointer Table can be located in a standard way defined\r
+ // in PI spec.\r
+ //\r
+ ASSERT ((*PeiServices)->Hdr.Revision >= 0x00010000);\r
+\r
+ //\r
+ // Make sure ReadOnlyVariable2ToReadOnlyVariable module is not present. If so, the call chain will form a\r
+ // infinite loop: ReadOnlyVariable2 -> ReadOnlyVariable -> ReadOnlyVariable2 -> ....\r
+ //\r
+ Status = PeiServicesLocatePpi (&gPeiReadonlyVariableThunkPresentPpiGuid, 0, NULL, &Interface);\r
+ ASSERT (Status == EFI_NOT_FOUND);\r
+ \r
+ Status = PeiServicesInstallPpi (&mReadOnlyVariableThunkPresent);\r
+ ASSERT_EFI_ERROR (Status);\r
+ \r
+ //\r
+ // Publish the variable capability to other modules\r
+ //\r
+ return PeiServicesInstallPpi (&mPpiListVariable);\r
+}\r
+\r
+/**\r
+ Provide the read variable functionality of the variable services.\r
+\r
+ @param PeiServices General purpose services available to every PEIM.\r
+ @param VariableName The variable name\r
+ @param VendorGuid The vendor's GUID\r
+ @param Attributes Pointer to the attribute\r
+ @param DataSize Size of data\r
+ @param Data Pointer to data\r
+\r
+ @retval EFI_SUCCESS The interface could be successfully installed\r
+ @retval EFI_NOT_FOUND The variable could not be discovered\r
+ @retval EFI_BUFFER_TOO_SMALL The caller buffer is not large enough\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PeiGetVariable (\r
+ IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,\r
+ IN CONST CHAR16 *VariableName,\r
+ IN CONST EFI_GUID *VariableGuid,\r
+ OUT UINT32 *Attributes,\r
+ IN OUT UINTN *DataSize,\r
+ OUT VOID *Data\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_PEI_READ_ONLY_VARIABLE_PPI *ReadOnlyVariable;\r
+\r
+ Status = PeiServicesLocatePpi (\r
+ &gEfiPeiReadOnlyVariablePpiGuid,\r
+ 0,\r
+ NULL,\r
+ (VOID **)&ReadOnlyVariable\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ return ReadOnlyVariable->PeiGetVariable (\r
+ (EFI_PEI_SERVICES **) GetPeiServicesTablePointer (),\r
+ (CHAR16 *)VariableName,\r
+ (EFI_GUID *)VariableGuid,\r
+ Attributes,\r
+ DataSize,\r
+ Data\r
+ );\r
+}\r
+\r
+/**\r
+ Provide the get next variable functionality of the variable services.\r
+\r
+ @param PeiServices General purpose services available to every PEIM.\r
+ @param VariabvleNameSize The variable name's size.\r
+ @param VariableName A pointer to the variable's name.\r
+ @param VariableGuid A pointer to the EFI_GUID structure.\r
+ @param VariableNameSize Size of the variable name\r
+ @param VariableName The variable name\r
+ @param VendorGuid The vendor's GUID\r
+\r
+ @retval EFI_SUCCESS The interface could be successfully installed\r
+ @retval EFI_NOT_FOUND The variable could not be discovered\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PeiGetNextVariableName (\r
+ IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,\r
+ IN OUT UINTN *VariableNameSize,\r
+ IN OUT CHAR16 *VariableName,\r
+ IN OUT EFI_GUID *VariableGuid\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_PEI_READ_ONLY_VARIABLE_PPI *ReadOnlyVariable;\r
+\r
+ Status = PeiServicesLocatePpi (\r
+ &gEfiPeiReadOnlyVariablePpiGuid,\r
+ 0,\r
+ NULL,\r
+ (VOID **)&ReadOnlyVariable\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ return ReadOnlyVariable->PeiGetNextVariableName (\r
+ (EFI_PEI_SERVICES **) GetPeiServicesTablePointer (),\r
+ VariableNameSize,\r
+ VariableName,\r
+ VariableGuid\r
+ );\r
+}\r
--- /dev/null
+#/** @file\r
+# Module produce EFI_PEI_READ_ONLY_VARIABLE_PPI top of EFI_PEI_READ_ONLY_VARIABLE2_PPI .\r
+#\r
+# UEFI PI Spec supersedes Intel's Framework Specs. \r
+# EFI_PEI_READ_ONLY_VARIABLE_PPI defined in Intel Framework Pkg is replaced by EFI_PEI_READ_ONLY_VARIABLE2_PPI\r
+# in MdePkg.\r
+# This module produces EFI_PEI_READ_ONLY_VARIABLE2_PPI on top of EFI_PEI_READ_ONLY_VARIABLE_PPI . \r
+# This module is used on platform when both of these two conditions are true:\r
+# 1) Framework module produces EFI_PEI_READ_ONLY_VARIABLE_PPI is present.\r
+# 2) The platform has PI modules that consumes EFI_PEI_READ_ONLY_VARIABLE2_PPI.\r
+#\r
+# This module can't be used together with ReadOnlyVariableToReadOnlyVariable2Thunk module.\r
+#\r
+#\r
+# PEIM to provide the Variable functionality.\r
+# Copyright (c) 2006 - 2007, Intel Corporation\r
+#\r
+# All rights reserved. This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+#\r
+#**/\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = ReadOnlyVariable2OnReadOnlyVariableThunk\r
+ FILE_GUID = 950216A2-A621-479c-A13D-2990617BDFE7\r
+ MODULE_TYPE = PEIM\r
+ VERSION_STRING = 1.0\r
+ EDK_RELEASE_VERSION = 0x00020000\r
+ EFI_SPECIFICATION_VERSION = 0x00020000\r
+\r
+ ENTRY_POINT = PeimInitializeReadOnlyVariable2\r
+\r
+#\r
+# The following information is for reference only and not required by the build tools.\r
+#\r
+# VALID_ARCHITECTURES = IA32 X64 IPF EBC\r
+#\r
+\r
+[Sources.common]\r
+ ReadOnlyVariable2OnReadOnlyVariableThunk.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ EdkCompatibilityPkg/EdkCompatibilityPkg.dec\r
+ IntelFrameworkPkg/IntelFrameworkPkg.dec\r
+\r
+[LibraryClasses]\r
+ PeimEntryPoint\r
+ PeiServicesLib\r
+ PeiServicesTablePointerLib\r
+ DebugLib\r
+\r
+[Ppis]\r
+ gEfiPeiReadOnlyVariablePpiGuid # PPI ALWAYS_CONSUMED\r
+ gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_PRODUCED\r
+ gPeiReadonlyVariableThunkPresentPpiGuid\r
+\r
+[Depex]\r
+ gEfiPeiReadOnlyVariablePpiGuid\r
+++ /dev/null
-/** @file\r
-Module produce EFI_PEI_READ_ONLY_VARIABLE2_PPI on top of EFI_PEI_READ_ONLY_VARIABLE_PPI.\r
-UEFI PI Spec supersedes Intel's Framework Specs. \r
-EFI_PEI_READ_ONLY_VARIABLE_PPI defined in Intel Framework Pkg is replaced by EFI_PEI_READ_ONLY_VARIABLE2_PPI\r
-in MdePkg.\r
-This module produces EFI_PEI_READ_ONLY_VARIABLE2_PPI on top of EFI_PEI_READ_ONLY_VARIABLE_PPI. \r
-This module is used on platform when both of these two conditions are true:\r
-1) Framework module produces EFI_PEI_READ_ONLY_VARIABLE_PPI is present.\r
-2) The platform has PI modules that only consumes EFI_PEI_READ_ONLY_VARIABLE2_PPI.\r
-\r
-This module can't be used together with ReadOnlyVariableToReadOnlyVariable2Thunk module.\r
-\r
-\r
-Copyright (c) 2006 - 2008 Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-Module Name:\r
-\r
-**/\r
-\r
-#include <PiPei.h>\r
-#include <Ppi/ReadOnlyVariable2.h>\r
-#include <Ppi/ReadOnlyVariable.h>\r
-#include <Ppi/ReadOnlyVariableThunkPresent.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/PeiServicesTablePointerLib.h>\r
-#include <Library/PeiServicesLib.h>\r
-\r
-//\r
-// Function Prototypes\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-PeiGetVariable (\r
- IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,\r
- IN CONST CHAR16 *VariableName,\r
- IN CONST EFI_GUID *VariableGuid,\r
- OUT UINT32 *Attributes,\r
- IN OUT UINTN *DataSize,\r
- OUT VOID *Data\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PeiGetNextVariableName (\r
- IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,\r
- IN OUT UINTN *VariableNameSize,\r
- IN OUT CHAR16 *VariableName,\r
- IN OUT EFI_GUID *VariableGuid\r
- );\r
-\r
-//\r
-// Module globals\r
-//\r
-EFI_PEI_READ_ONLY_VARIABLE2_PPI mVariablePpi = {\r
- PeiGetVariable,\r
- PeiGetNextVariableName\r
-};\r
-\r
-EFI_PEI_PPI_DESCRIPTOR mPpiListVariable = {\r
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
- &gEfiPeiReadOnlyVariable2PpiGuid,\r
- &mVariablePpi\r
-};\r
-\r
-\r
-EFI_PEI_PPI_DESCRIPTOR mReadOnlyVariableThunkPresent = {\r
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
- &gPeiReadonlyVariableThunkPresentPpiGuid,\r
- NULL\r
-};\r
-\r
-/**\r
- User entry for this PEIM driver.\r
- \r
- @param FileHandle Handle of the file being invoked.\r
- @param PeiServices Describes the list of possible PEI Services.\r
-\r
- @retval EFI_SUCCESS ReadOnlyVariable2 PPI is successfully installed.\r
- @return Others ReadOnlyVariable2 PPI is not successfully installed.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-PeimInitializeReadOnlyVariable2 (\r
- IN EFI_PEI_FILE_HANDLE FfsHeader,\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
- )\r
-{\r
- VOID *Interface;\r
- EFI_STATUS Status;\r
- //\r
- // This thunk module can only be used together with a PI PEI core, as we \r
- // assume PeiServices Pointer Table can be located in a standard way defined\r
- // in PI spec.\r
- //\r
- ASSERT ((*PeiServices)->Hdr.Revision >= 0x00010000);\r
-\r
- //\r
- // Make sure ReadOnlyVariable2ToReadOnlyVariable module is not present. If so, the call chain will form a\r
- // infinite loop: ReadOnlyVariable2 -> ReadOnlyVariable -> ReadOnlyVariable2 -> ....\r
- //\r
- Status = PeiServicesLocatePpi (&gPeiReadonlyVariableThunkPresentPpiGuid, 0, NULL, &Interface);\r
- ASSERT (Status == EFI_NOT_FOUND);\r
- \r
- Status = PeiServicesInstallPpi (&mReadOnlyVariableThunkPresent);\r
- ASSERT_EFI_ERROR (Status);\r
- \r
- //\r
- // Publish the variable capability to other modules\r
- //\r
- return PeiServicesInstallPpi (&mPpiListVariable);\r
-}\r
-\r
-/**\r
- Provide the read variable functionality of the variable services.\r
-\r
- @param PeiServices General purpose services available to every PEIM.\r
- @param VariableName The variable name\r
- @param VendorGuid The vendor's GUID\r
- @param Attributes Pointer to the attribute\r
- @param DataSize Size of data\r
- @param Data Pointer to data\r
-\r
- @retval EFI_SUCCESS The interface could be successfully installed\r
- @retval EFI_NOT_FOUND The variable could not be discovered\r
- @retval EFI_BUFFER_TOO_SMALL The caller buffer is not large enough\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-PeiGetVariable (\r
- IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,\r
- IN CONST CHAR16 *VariableName,\r
- IN CONST EFI_GUID *VariableGuid,\r
- OUT UINT32 *Attributes,\r
- IN OUT UINTN *DataSize,\r
- OUT VOID *Data\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_PEI_READ_ONLY_VARIABLE_PPI *ReadOnlyVariable;\r
-\r
- Status = PeiServicesLocatePpi (\r
- &gEfiPeiReadOnlyVariablePpiGuid,\r
- 0,\r
- NULL,\r
- (VOID **)&ReadOnlyVariable\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- return ReadOnlyVariable->PeiGetVariable (\r
- (EFI_PEI_SERVICES **) GetPeiServicesTablePointer (),\r
- (CHAR16 *)VariableName,\r
- (EFI_GUID *)VariableGuid,\r
- Attributes,\r
- DataSize,\r
- Data\r
- );\r
-}\r
-\r
-/**\r
- Provide the get next variable functionality of the variable services.\r
-\r
- @param PeiServices General purpose services available to every PEIM.\r
- @param VariabvleNameSize The variable name's size.\r
- @param VariableName A pointer to the variable's name.\r
- @param VariableGuid A pointer to the EFI_GUID structure.\r
- @param VariableNameSize Size of the variable name\r
- @param VariableName The variable name\r
- @param VendorGuid The vendor's GUID\r
-\r
- @retval EFI_SUCCESS The interface could be successfully installed\r
- @retval EFI_NOT_FOUND The variable could not be discovered\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-PeiGetNextVariableName (\r
- IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This,\r
- IN OUT UINTN *VariableNameSize,\r
- IN OUT CHAR16 *VariableName,\r
- IN OUT EFI_GUID *VariableGuid\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_PEI_READ_ONLY_VARIABLE_PPI *ReadOnlyVariable;\r
-\r
- Status = PeiServicesLocatePpi (\r
- &gEfiPeiReadOnlyVariablePpiGuid,\r
- 0,\r
- NULL,\r
- (VOID **)&ReadOnlyVariable\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- return ReadOnlyVariable->PeiGetNextVariableName (\r
- (EFI_PEI_SERVICES **) GetPeiServicesTablePointer (),\r
- VariableNameSize,\r
- VariableName,\r
- VariableGuid\r
- );\r
-}\r
+++ /dev/null
-#/** @file\r
-# Module produce EFI_PEI_READ_ONLY_VARIABLE_PPI top of EFI_PEI_READ_ONLY_VARIABLE2_PPI .\r
-#\r
-# UEFI PI Spec supersedes Intel's Framework Specs. \r
-# EFI_PEI_READ_ONLY_VARIABLE_PPI defined in Intel Framework Pkg is replaced by EFI_PEI_READ_ONLY_VARIABLE2_PPI\r
-# in MdePkg.\r
-# This module produces EFI_PEI_READ_ONLY_VARIABLE2_PPI on top of EFI_PEI_READ_ONLY_VARIABLE_PPI . \r
-# This module is used on platform when both of these two conditions are true:\r
-# 1) Framework module produces EFI_PEI_READ_ONLY_VARIABLE_PPI is present.\r
-# 2) The platform has PI modules that consumes EFI_PEI_READ_ONLY_VARIABLE2_PPI.\r
-#\r
-# This module can't be used together with ReadOnlyVariableToReadOnlyVariable2Thunk module.\r
-#\r
-#\r
-# PEIM to provide the Variable functionality.\r
-# Copyright (c) 2006 - 2007, Intel Corporation\r
-#\r
-# All rights reserved. This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution. The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-#\r
-#**/\r
-\r
-[Defines]\r
- INF_VERSION = 0x00010005\r
- BASE_NAME = ReadOnlyVariable2OnReadOnlyVariableThunk\r
- FILE_GUID = 950216A2-A621-479c-A13D-2990617BDFE7\r
- MODULE_TYPE = PEIM\r
- VERSION_STRING = 1.0\r
- EDK_RELEASE_VERSION = 0x00020000\r
- EFI_SPECIFICATION_VERSION = 0x00020000\r
-\r
- ENTRY_POINT = PeimInitializeReadOnlyVariable2\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-# VALID_ARCHITECTURES = IA32 X64 IPF EBC\r
-#\r
-\r
-[Sources.common]\r
- ReadOnlyVariable2OnReadOnlyVariableThunk.c\r
-\r
-[Packages]\r
- MdePkg/MdePkg.dec\r
- EdkCompatibilityPkg/EdkCompatibilityPkg.dec\r
- IntelFrameworkPkg/IntelFrameworkPkg.dec\r
-\r
-[LibraryClasses]\r
- PeimEntryPoint\r
- PeiServicesLib\r
- PeiServicesTablePointerLib\r
- DebugLib\r
-\r
-[Ppis]\r
- gEfiPeiReadOnlyVariablePpiGuid # PPI ALWAYS_CONSUMED\r
- gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_PRODUCED\r
- gPeiReadonlyVariableThunkPresentPpiGuid\r
-\r
-[Depex]\r
- gEfiPeiReadOnlyVariablePpiGuid\r