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 ACPI Table instance
45 //
46 PrivateData = AllocateZeroPool (sizeof (EFI_ACPI_TABLE_INSTANCE));
47 if (PrivateData != NULL) {
48 PrivateData->Signature = EFI_ACPI_TABLE_SIGNATURE;
49 } else {
50 ASSERT (PrivateData);
51 return EFI_OUT_OF_RESOURCES;
52 }
53
54 //
55 // Call all constructors per produced protocols
56 //
57 Status = AcpiTableAcpiTableConstructor (PrivateData);
58 if (EFI_ERROR (Status)) {
59 gBS->FreePool (PrivateData);
60 return EFI_LOAD_ERROR;
61 }
62
63 mPrivateData = PrivateData;
64 //
65 // Install ACPI Table protocol
66 //
67 if (FeaturePcdGet (PcdInstallAcpiSdtProtocol)) {
68 Status = gBS->InstallMultipleProtocolInterfaces (
69 &mHandle,
70 &gEfiAcpiTableProtocolGuid,
71 &mPrivateData->AcpiTableProtocol,
72 &gEfiAcpiSdtProtocolGuid,
73 &mPrivateData->AcpiSdtProtocol,
74 NULL
75 );
76 } else {
77 Status = gBS->InstallMultipleProtocolInterfaces (
78 &mHandle,
79 &gEfiAcpiTableProtocolGuid,
80 &mPrivateData->AcpiTableProtocol,
81 NULL
82 );
83 }
84
85 ASSERT_EFI_ERROR (Status);
86
87 return Status;
88}
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:463
#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