30 IN CONST VOID *PrimaryEntry,
31 IN CONST VOID *SecondaryEntry
34 CONST OC_ACPI_ADD_ENTRY *ACPIAddPrimaryEntry;
35 CONST OC_ACPI_ADD_ENTRY *ACPIAddSecondaryEntry;
36 CONST CHAR8 *ACPIAddPrimaryPathString;
37 CONST CHAR8 *ACPIAddSecondaryPathString;
39 ACPIAddPrimaryEntry = *(CONST OC_ACPI_ADD_ENTRY **)PrimaryEntry;
40 ACPIAddSecondaryEntry = *(CONST OC_ACPI_ADD_ENTRY **)SecondaryEntry;
41 ACPIAddPrimaryPathString =
OC_BLOB_GET (&ACPIAddPrimaryEntry->Path);
42 ACPIAddSecondaryPathString =
OC_BLOB_GET (&ACPIAddSecondaryEntry->Path);
44 if (!ACPIAddPrimaryEntry->Enabled || !ACPIAddSecondaryEntry->Enabled) {
48 return StringIsDuplicated (
"ACPI->Add", ACPIAddPrimaryPathString, ACPIAddSecondaryPathString);
54 IN OC_GLOBAL_CONFIG *Config
65 for (Index = 0; Index < Config->Acpi.Add.Count; ++Index) {
66 Path =
OC_BLOB_GET (&Config->Acpi.Add.Values[Index]->Path);
67 Comment =
OC_BLOB_GET (&Config->Acpi.Add.Values[Index]->Comment);
73 DEBUG ((DEBUG_WARN,
"ACPI->Add[%u]->Path contains illegal character!\n", Index));
79 DEBUG ((DEBUG_WARN,
"ACPI->Add[%u]->Comment contains illegal character!\n", Index));
84 DEBUG ((DEBUG_WARN,
"ACPI->Add[%u]->Path has filename suffix other than .aml and .bin!\n", Index));
95 "ACPI->Add[%u]->Path (length %u) is too long (should not exceed %u)!\n",
108 Config->Acpi.Add.Values,
109 Config->Acpi.Add.Count,
110 sizeof (Config->Acpi.Add.Values[0]),
120 IN OC_GLOBAL_CONFIG *Config
125 CONST CHAR8 *Comment;
129 for (Index = 0; Index < Config->Acpi.Delete.Count; ++Index) {
130 Comment =
OC_BLOB_GET (&Config->Acpi.Delete.Values[Index]->Comment);
136 DEBUG ((DEBUG_WARN,
"ACPI->Delete[%u]->Comment contains illegal character!\n", Index));
152 IN OC_GLOBAL_CONFIG *Config
157 CONST CHAR8 *Comment;
160 CONST UINT8 *Replace;
164 CONST UINT8 *ReplaceMask;
165 UINT32 ReplaceMaskSize;
169 for (Index = 0; Index < Config->Acpi.Patch.Count; ++Index) {
170 Comment =
OC_BLOB_GET (&Config->Acpi.Patch.Values[Index]->Comment);
171 Find =
OC_BLOB_GET (&Config->Acpi.Patch.Values[Index]->Find);
172 FindSize = Config->Acpi.Patch.Values[Index]->Find.Size;
173 Replace =
OC_BLOB_GET (&Config->Acpi.Patch.Values[Index]->Replace);
174 ReplaceSize = Config->Acpi.Patch.Values[Index]->Replace.Size;
175 Mask =
OC_BLOB_GET (&Config->Acpi.Patch.Values[Index]->Mask);
176 MaskSize = Config->Acpi.Patch.Values[Index]->Mask.Size;
177 ReplaceMask =
OC_BLOB_GET (&Config->Acpi.Patch.Values[Index]->ReplaceMask);
178 ReplaceMaskSize = Config->Acpi.Patch.Values[Index]->ReplaceMask.Size;
184 DEBUG ((DEBUG_WARN,
"ACPI->Patch[%u]->Comment contains illegal character!\n", Index));
216 IN OC_GLOBAL_CONFIG *Config
227 DEBUG ((DEBUG_VERBOSE,
"config loaded into %a!\n", __func__));
231 for (Index = 0; Index <
ARRAY_SIZE (ACPICheckers); ++Index) {
232 ErrorCount += ACPICheckers[Index](Config);
#define ARRAY_SIZE(Array)
#define OPEN_CORE_ACPI_PATH
#define OC_STORAGE_SAFE_PATH_MAX
#define L_STR_LEN(String)
BOOLEAN EFIAPI OcAsciiEndsWith(IN CONST CHAR8 *String, IN CONST CHAR8 *SearchString, IN BOOLEAN CaseInsensitiveMatch)
#define OC_BLOB_GET(Blob)
UINT32 ReportError(IN CONST CHAR8 *FuncName, IN UINT32 ErrorCount)
UINT32 ValidatePatch(IN CONST CHAR8 *PatchSection, IN UINT32 PatchIndex, IN BOOLEAN FindSizeCanBeZero, IN CONST UINT8 *Find, IN UINT32 FindSize, IN CONST UINT8 *Replace, IN UINT32 ReplaceSize, IN CONST UINT8 *Mask, IN UINT32 MaskSize, IN CONST UINT8 *ReplaceMask, IN UINT32 ReplaceMaskSize)
BOOLEAN StringIsDuplicated(IN CONST CHAR8 *EntrySection, IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString)
UINT32 FindArrayDuplication(IN VOID *First, IN UINTN Number, IN UINTN Size, IN DUPLICATION_CHECK DupChecker)
BOOLEAN AsciiFileSystemPathIsLegal(IN CONST CHAR8 *Path)
BOOLEAN AsciiCommentIsLegal(IN CONST CHAR8 *Comment)
STATIC BOOLEAN ACPIAddHasDuplication(IN CONST VOID *PrimaryEntry, IN CONST VOID *SecondaryEntry)
STATIC UINT32 CheckACPIDelete(IN OC_GLOBAL_CONFIG *Config)
STATIC UINT32 CheckACPIPatch(IN OC_GLOBAL_CONFIG *Config)
UINT32 CheckACPI(IN OC_GLOBAL_CONFIG *Config)
STATIC UINT32 CheckACPIAdd(IN OC_GLOBAL_CONFIG *Config)
UINT32(* CONFIG_CHECK)(IN OC_GLOBAL_CONFIG *Config)