TianoCore EDK2 master
Loading...
Searching...
No Matches
AcpiTable.c
Go to the documentation of this file.
1
9//
10// Includes
11//
12#include "AcpiTable.h"
13
14//
15// Handle to install ACPI Table Protocol
16//
19
34EFIAPI
36 IN EFI_HANDLE ImageHandle,
37 IN EFI_SYSTEM_TABLE *SystemTable
38 )
39{
40 EFI_STATUS Status;
41 EFI_ACPI_TABLE_INSTANCE *PrivateData;
42
43 //
44 // Initialize our protocol
45 //
46 PrivateData = AllocateZeroPool (sizeof (EFI_ACPI_TABLE_INSTANCE));
47 ASSERT (PrivateData);
48 PrivateData->Signature = EFI_ACPI_TABLE_SIGNATURE;
49
50 //
51 // Call all constructors per produced protocols
52 //
53 Status = AcpiTableAcpiTableConstructor (PrivateData);
54 if (EFI_ERROR (Status)) {
55 gBS->FreePool (PrivateData);
56 return EFI_LOAD_ERROR;
57 }
58
59 //
60 // Install ACPI Table protocol
61 //
62 if (FeaturePcdGet (PcdInstallAcpiSdtProtocol)) {
63 mPrivateData = PrivateData;
64 Status = gBS->InstallMultipleProtocolInterfaces (
65 &mHandle,
66 &gEfiAcpiTableProtocolGuid,
67 &PrivateData->AcpiTableProtocol,
68 &gEfiAcpiSdtProtocolGuid,
69 &mPrivateData->AcpiSdtProtocol,
70 NULL
71 );
72 } else {
73 Status = gBS->InstallMultipleProtocolInterfaces (
74 &mHandle,
75 &gEfiAcpiTableProtocolGuid,
76 &PrivateData->AcpiTableProtocol,
77 NULL
78 );
79 }
80
81 ASSERT_EFI_ERROR (Status);
82
83 return Status;
84}
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
EFI_STATUS EFIAPI InitializeAcpiTableDxe(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
Definition: AcpiTable.c:35
EFI_HANDLE mHandle
Definition: AcpiTable.c:17
EFI_STATUS AcpiTableAcpiTableConstructor(EFI_ACPI_TABLE_INSTANCE *AcpiTableInstance)
#define NULL
Definition: Base.h:319
#define IN
Definition: Base.h:279
#define GLOBAL_REMOVE_IF_UNREFERENCED
Definition: Base.h:48
#define ASSERT_EFI_ERROR(StatusParameter)
Definition: DebugLib.h:462
#define FeaturePcdGet(TokenName)
Definition: PcdLib.h:50
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
VOID * EFI_HANDLE
Definition: UefiBaseType.h:33
EFI_BOOT_SERVICES * gBS