12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /** @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>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #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;
- }
|