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

Function LoadAllPatchedAML

rEFIt_UEFI/Platform/AcpiPatcher.cpp:1613–1670  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1611#define BVALUE_ATTEMPTED 2 // special value for MenuItem.BValue to avoid excessive log output
1612
1613void LoadAllPatchedAML(CONST CHAR16* AcpiOemPath, UINTN Pass)
1614{
1615 if (!gSettings.AutoMerge && AUTOMERGE_PASS1 == Pass) {
1616 // nothing to do in this case, since AutoMerge=false -> no tables ever merged
1617 return;
1618 }
1619 if (ACPIPatchedAML) {
1620 DbgHeader("ACPIPatchedAML");
1621 if (gSettings.AutoMerge) {
1622 DBG("AutoMerge pass %llu\n", Pass);
1623 }
1624 //DBG("Start: Processing Patched AML(s): ");
1625 if (gSettings.SortedACPICount) {
1626 UINTN Index;
1627 DBG("Sorted\n");
1628 for (Index = 0; Index < gSettings.SortedACPICount; Index++) {
1629 ACPI_PATCHED_AML *ACPIPatchedAMLTmp;
1630 for (ACPIPatchedAMLTmp = ACPIPatchedAML; ACPIPatchedAMLTmp; ACPIPatchedAMLTmp = ACPIPatchedAMLTmp->Next) {
1631 if (0 == StriCmp(ACPIPatchedAMLTmp->FileName, gSettings.SortedACPI[Index]) && ACPIPatchedAMLTmp->MenuItem.BValue) {
1632 if (BVALUE_ATTEMPTED != ACPIPatchedAMLTmp->MenuItem.BValue)
1633 DBG("Disabled: %ls, skip\n", ACPIPatchedAMLTmp->FileName);
1634 ACPIPatchedAMLTmp->MenuItem.BValue = BVALUE_ATTEMPTED;
1635 break;
1636 }
1637 }
1638 if (!ACPIPatchedAMLTmp) { // NULL when not disabled
1639 DBG("Inserting table[%llu]:%ls from %ls: ", Index, gSettings.SortedACPI[Index], AcpiOemPath);
1640 if (LoadPatchedAML(AcpiOemPath, gSettings.SortedACPI[Index], Pass)) {
1641 // avoid inserting table again on second pass
1642 for (ACPI_PATCHED_AML* temp2 = ACPIPatchedAML; temp2; temp2 = temp2->Next) {
1643 if (0 == StriCmp(temp2->FileName, gSettings.SortedACPI[Index])) {
1644 temp2->MenuItem.BValue = BVALUE_ATTEMPTED;
1645 break;
1646 }
1647 }
1648 }
1649 }
1650 }
1651 } else {
1652 ACPI_PATCHED_AML *ACPIPatchedAMLTmp;
1653 DBG("Unsorted\n");
1654 for (ACPIPatchedAMLTmp = ACPIPatchedAML; ACPIPatchedAMLTmp; ACPIPatchedAMLTmp = ACPIPatchedAMLTmp->Next) {
1655 if (!ACPIPatchedAMLTmp->MenuItem.BValue) {
1656 DBG("Inserting %ls from %ls: ", ACPIPatchedAMLTmp->FileName, AcpiOemPath);
1657 if (LoadPatchedAML(AcpiOemPath, ACPIPatchedAMLTmp->FileName, Pass)) {
1658 // avoid inserting table again on second pass
1659 ACPIPatchedAMLTmp->MenuItem.BValue = BVALUE_ATTEMPTED;
1660 }
1661 } else {
1662 if (BVALUE_ATTEMPTED != ACPIPatchedAMLTmp->MenuItem.BValue)
1663 DBG("Disabled: %ls, skip\n", ACPIPatchedAMLTmp->FileName);
1664 ACPIPatchedAMLTmp->MenuItem.BValue = BVALUE_ATTEMPTED;
1665 }
1666 }
1667 }
1668 //DBG("End: Processing Patched AML(s)\n");
1669 }
1670}

Callers 1

PatchACPIFunction · 0.85

Calls 3

DbgHeaderFunction · 0.85
LoadPatchedAMLFunction · 0.85
StriCmpFunction · 0.50

Tested by

no test coverage detected