16#include <Library/BaseLib.h>
17#include <Library/BaseMemoryLib.h>
20#include <Library/MemoryAllocationLib.h>
21#include <Library/PrintLib.h>
22#include <Library/UefiLib.h>
23#include <Library/UefiBootServicesTableLib.h>
26#include <IndustryStandard/AcpiAml.h>
27#include <IndustryStandard/Acpi.h>
36 IN EFI_FILE_PROTOCOL *Root,
44 UnicodeSPrint (TempName,
sizeof (TempName), L
"%a.aml", Name);
51 IN EFI_FILE_PROTOCOL *Root,
52 IN EFI_ACPI_COMMON_HEADER *Data,
61 EFI_FILE_PROTOCOL *TmpFile;
67 for (Index = 0; Index <
sizeof (Data->Signature); ++Index) {
80 for (Index = 0; Index < 256; ++Index) {
81 UnicodeSPrint (TempName,
sizeof (TempName), L
"%a-%u.aml", Name, (UINT32)(Index + 1));
91 if (EFI_ERROR (Status)) {
95 TmpFile->Close (TmpFile);
98 AsciiSPrint (&Name[4], NameSize - 4,
"-%u", (UINT32)(Index + 1));
103 IN EFI_FILE_PROTOCOL *Root
114 if (EFI_ERROR (Status)) {
115 DEBUG ((DEBUG_INFO,
"OCA: Failed to init context for dumping - %r\n", Status));
126 if (Context.
Rsdp->Revision == 0) {
127 Length = OFFSET_OF (EFI_ACPI_6_2_ROOT_SYSTEM_DESCRIPTION_POINTER,
Length);
133 DEBUG ((DEBUG_INFO,
"OCA: Dumped RSDP (%u bytes) - %r\n", (UINT32)
Length, Status));
136 DEBUG ((DEBUG_INFO,
"OCA: Dumped RSDT (%u bytes) - %r\n", (UINT32)Context.
Rsdt->
Header.Length, Status));
138 if (Context.
Xsdt != NULL) {
140 DEBUG ((DEBUG_INFO,
"OCA: Dumped XSDT (%u bytes) - %r\n", (UINT32)Context.
Xsdt->
Header.Length, Status));
143 if (Context.
Dsdt != NULL) {
145 DEBUG ((DEBUG_INFO,
"OCA: Dumped DSDT (%u bytes) - %r\n", (UINT32)Context.
Dsdt->Length, Status));
153 "OCA: Dumped table %a %u/%u (%u bytes) - %r\n",
157 (UINT32)Context.
Tables[Index]->Length,
STATIC VOID AcpiGetTableName(IN EFI_FILE_PROTOCOL *Root, IN EFI_ACPI_COMMON_HEADER *Data, OUT CHAR8 *Name, IN UINTN NameSize)
EFI_STATUS AcpiDumpTables(IN EFI_FILE_PROTOCOL *Root)
STATIC EFI_STATUS AcpiDumpTable(IN EFI_FILE_PROTOCOL *Root, IN CONST CHAR8 *Name, IN VOID *Data, IN UINTN Size)
VOID AcpiFreeContext(IN OUT OC_ACPI_CONTEXT *Context)
EFI_STATUS AcpiInitContext(IN OUT OC_ACPI_CONTEXT *Context)
DMG_SIZE_DEVICE_PATH Size
EFI_STATUS OcSetFileData(IN EFI_FILE_PROTOCOL *WritableFs OPTIONAL, IN CONST CHAR16 *FileName, IN CONST VOID *Buffer, IN UINT32 Size)
EFI_STATUS OcSafeFileOpen(IN CONST EFI_FILE_PROTOCOL *Directory, OUT EFI_FILE_PROTOCOL **NewHandle, IN CONST CHAR16 *FileName, IN CONST UINT64 OpenMode, IN CONST UINT64 Attributes)
EFI_ACPI_DESCRIPTION_HEADER Header
EFI_ACPI_DESCRIPTION_HEADER Header
EFI_ACPI_6_2_ROOT_SYSTEM_DESCRIPTION_POINTER * Rsdp
EFI_ACPI_COMMON_HEADER ** Tables
EFI_ACPI_DESCRIPTION_HEADER * Dsdt
OC_ACPI_6_2_EXTENDED_SYSTEM_DESCRIPTION_TABLE * Xsdt
OC_ACPI_6_2_ROOT_SYSTEM_DESCRIPTION_TABLE * Rsdt