summaryrefslogtreecommitdiffstats
path: root/EmulatorPkg/Library/ThunkPpiList
diff options
context:
space:
mode:
Diffstat (limited to 'EmulatorPkg/Library/ThunkPpiList')
-rw-r--r--EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c76
-rw-r--r--EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.inf38
2 files changed, 114 insertions, 0 deletions
diff --git a/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c b/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c
new file mode 100644
index 0000000000..3c2fd93e7f
--- /dev/null
+++ b/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.c
@@ -0,0 +1,76 @@
+/** @file
+ Emulator Thunk to abstract OS services from pure EFI code
+
+ Copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR>
+ Copyright (c) 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.
+
+**/
+
+#include <PiPei.h>
+#include <Library/BaseLib.h>
+#include <Library/MemoryAllocationLib.h>
+
+
+UINTN gThunkPpiListSize = 0;
+EFI_PEI_PPI_DESCRIPTOR *gThunkPpiList = NULL;
+
+
+
+EFI_PEI_PPI_DESCRIPTOR *
+GetThunkPpiList (
+ VOID
+ )
+{
+ UINTN Index;
+
+ if (gThunkPpiList == NULL) {
+ return NULL;
+ }
+
+ Index = (gThunkPpiListSize/sizeof (EFI_PEI_PPI_DESCRIPTOR)) - 1;
+ gThunkPpiList[Index].Flags |= EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST;
+
+ return gThunkPpiList;
+}
+
+
+EFI_STATUS
+EFIAPI
+AddThunkPpi (
+ IN UINTN Flags,
+ IN EFI_GUID *Guid,
+ IN VOID *Ppi
+ )
+{
+ UINTN Index;
+
+ gThunkPpiList = ReallocatePool (
+ gThunkPpiListSize,
+ gThunkPpiListSize + sizeof (EFI_PEI_PPI_DESCRIPTOR),
+ gThunkPpiList
+ );
+ if (gThunkPpiList == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ Index = (gThunkPpiListSize/sizeof (EFI_PEI_PPI_DESCRIPTOR));
+ gThunkPpiList[Index].Flags = Flags;
+ gThunkPpiList[Index].Guid = Guid;
+ gThunkPpiList[Index].Ppi = Ppi;
+ gThunkPpiListSize += sizeof (EFI_PEI_PPI_DESCRIPTOR);
+
+ return EFI_SUCCESS;
+}
+
+
+
+
+
diff --git a/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.inf b/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.inf
new file mode 100644
index 0000000000..54f53ab313
--- /dev/null
+++ b/EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.inf
@@ -0,0 +1,38 @@
+## @file
+# Place thunk PPI in HOB.
+#
+# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
+# Portions copyright (c) 2011, Apple Inc. All rights reserved.
+#
+# 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 = ThunkPpiList
+ FILE_GUID = 465FDE84-E8B0-B04B-A843-A03F68F617A9
+ MODULE_TYPE = BASE
+ VERSION_STRING = 1.0
+ LIBRARY_CLASS = MemoryAllocationLib|SEC BASE USER_DEFINED
+
+[Sources]
+ ThunkPpiList.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ EmulatorPkg/EmulatorPkg.dec
+
+[LibraryClasses]
+ BaseLib
+ BaseMemoryLib
+
+[BuildOptions]
+ XCODE:*_*_*_DLINK_PATH == gcc
+