MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / DumpTable

Function DumpTable

rEFIt_UEFI/Platform/AcpiPatcher.cpp:1005–1093  ·  view source on GitHub ↗

Saves Table to disk as DirName\\FileName (DirName != NULL) * or just prints basic table data to log (DirName == NULL). */

Source from the content-addressed store, hash-verified

1003 * or just prints basic table data to log (DirName == NULL).
1004 */
1005EFI_STATUS DumpTable(EFI_ACPI_DESCRIPTION_HEADER *TableEntry, CONST CHAR8 *CheckSignature, CONST CHAR16 *DirName, const XStringW& FileName, CONST CHAR16 *FileNamePrefix, INTN *SsdtCount)
1006{
1007 EFI_STATUS Status;
1008 CHAR8 Signature[5];
1009 CHAR8 OemTableId[9];
1010
1011 // Take Signature and OemId for printing
1012 CopyMem(&Signature[0], &TableEntry->Signature, 4);
1013 Signature[4] = 0;
1014 CopyMem(&OemTableId[0], &TableEntry->OemTableId, 8);
1015 OemTableId[8] = 0;
1016 stripTrailingSpaces(OemTableId);
1017
1018 DBG(" %p: '%s', '%s', Rev: %d, Len: %d", TableEntry, Signature, OemTableId, TableEntry->Revision, TableEntry->Length);
1019
1020 //
1021 // Additional checks
1022 //
1023 if (CheckSignature != NULL && AsciiStrCmp(Signature, CheckSignature) != 0) {
1024 DBG(" -> invalid signature, expecting %s\n", CheckSignature);
1025 return EFI_INVALID_PARAMETER;
1026 }
1027 // XSDT checks
1028 if (TableEntry->Signature == EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) {
1029 if (TableEntry->Length < sizeof(XSDT_TABLE)) {
1030 DBG(" -> invalid length\n");
1031 return EFI_INVALID_PARAMETER;
1032 }
1033 }
1034 // RSDT checks
1035 if (TableEntry->Signature == EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) {
1036 if (TableEntry->Length < sizeof(RSDT_TABLE)) {
1037 DBG(" -> invalid length\n");
1038 return EFI_INVALID_PARAMETER;
1039 }
1040 }
1041 // FADT/FACP checks
1042 if (TableEntry->Signature == EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE) {
1043 if (TableEntry->Length < sizeof(EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE)) {
1044 DBG(" -> invalid length\n");
1045 return EFI_INVALID_PARAMETER;
1046 }
1047 }
1048 // DSDT checks
1049 if (TableEntry->Signature == EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) {
1050 if (TableEntry->Length < sizeof(EFI_ACPI_DESCRIPTION_HEADER)) {
1051 DBG(" -> invalid length\n");
1052 return EFI_INVALID_PARAMETER;
1053 }
1054 }
1055 // SSDT checks
1056 if (TableEntry->Signature == EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE) {
1057 if (TableEntry->Length < sizeof(EFI_ACPI_DESCRIPTION_HEADER)) {
1058 DBG(" -> invalid length\n");
1059 return EFI_INVALID_PARAMETER;
1060 }
1061 }
1062

Callers 2

DumpFadtTablesFunction · 0.85
DumpTablesFunction · 0.85

Calls 11

stripTrailingSpacesFunction · 0.85
AsciiStrCmpFunction · 0.85
IsTableSavedFunction · 0.85
GenerateFileNameFunction · 0.85
SWPrintfFunction · 0.85
SaveBufferToDiskFunction · 0.85
MarkTableAsSavedFunction · 0.85
DumpChildSsdtFunction · 0.85
CopyMemFunction · 0.50
isEmptyMethod · 0.45
wc_strMethod · 0.45

Tested by

no test coverage detected