Import ACPICA 20190329.

This commit is contained in:
Jung-uk Kim 2019-03-29 16:40:11 +00:00
parent 805e3b079c
commit 222d1f4926
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/vendor-sys/acpica/dist/; revision=345699
svn path=/vendor-sys/acpica/20190329/; revision=345700; tag=vendor/acpica/20190329
78 changed files with 422 additions and 257 deletions

View File

@ -1,8 +1,76 @@
----------------------------------------
29 March 2019. Summary of changes for version 20190329:
1) ACPICA kernel-resident subsystem:
Namespace support: Remove the address nodes from global list after method
termination. The global address list contains pointers to namespace nodes
that represent Operation Regions. This change properly removes Operation
Region namespace nodes that are declared dynamically during method
execution.
Linux: Use a different debug default than ACPICA. There was a divergence
between Linux and the ACPICA codebases. In order to resolve this
divergence, Linux now declares its own debug default in aclinux.h
Renamed some internal macros to improve code understanding and
maintenance. The macros below all operate on single 4-character ACPI
NameSegs, not generic strings (old -> new):
ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE
ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG
Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
table.
Test suite: Update makefiles, add PCC operation region support
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented additional illegal forward reference detection. Now
detect and emit an error upon detection of a forward reference from a
Field to an Operation Region. This will fail at runtime if allowed to
pass the compiler.
AcpiExec: Add an address list check for dynamic Operation Regions. This
feature performs a sanity test for each node the global address list.
This is done in order to ensure that all dynamic operation regions are
properly removed from the global address list and no dangling pointers
are left behind.
Disassembler: Improved generation of resource pathnames. This change
improves the code that generates resource descriptor and resource tag
pathnames. The original code used a bunch of str* C library functions
that caused warnings on some compilers.
iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
function can overwrite buffers if the calling code is not very careful.
In the case of generating a module/table header, use of memmove is a
better implementation.
3) Status of new features that have not been completed at this time:
iASL: Implementing an enhanced multiple file compilation into a single
namespace feature (Status): This feature will be released soon, and
allows multiple ASL files to be compiled into the same single namespace.
By doing so, any unresolved external declarations as well as duplicate
named object declarations can be detected during compilation (rather than
later during runtime). The following commands are examples that utilize
this feature:
iasl dsdt.asl ssdt.asl
iasl dsdt.asl ssdt1.asl ssdt2.asl
iasl dsdt.asl ssdt*.asl
ASL tutorial status: Feedback is being gathered internally and the
current plan is to publish this tutorial on the ACPICA website after a
final review by a tech writer.
----------------------------------------
15 February 2019. Summary of changes for version 20190215:
This release is available at https://acpica.org/downloads
0) Support for ACPI specification version 6.3:

View File

@ -585,7 +585,7 @@ AcValidateTableHeader (
* These fields must be ASCII: OemId, OemTableId, AslCompilerId.
* We allow a NULL terminator in OemId and OemTableId.
*/
for (i = 0; i < ACPI_NAME_SIZE; i++)
for (i = 0; i < ACPI_NAMESEG_SIZE; i++)
{
if (!ACPI_IS_ASCII ((UINT8) TableHeader.AslCompilerId[i]))
{

View File

@ -459,7 +459,7 @@ AdDisassembleOneTable (
*/
if (AcpiGbl_CaptureComments)
{
strncpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAME_SIZE);
strncpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAMESEG_SIZE);
}
#endif

View File

@ -814,7 +814,7 @@ AcpiDmLoadDescendingOp (
while (AcpiGbl_PreDefinedNames[PreDefineIndex].Name)
{
if (ACPI_COMPARE_NAME (Node->Name.Ascii,
if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii,
AcpiGbl_PreDefinedNames[PreDefineIndex].Name))
{
PreDefined = TRUE;

View File

@ -490,7 +490,7 @@ AcpiAhMatchPredefinedName (
for (Info = AslPredefinedInfo; Info->Name; Info++)
{
if (ACPI_COMPARE_NAME (Nameseg, Info->Name))
if (ACPI_COMPARE_NAMESEG (Nameseg, Info->Name))
{
return (Info);
}

View File

@ -183,7 +183,7 @@ AcpiAhGetTableInfo (
for (Info = AcpiGbl_SupportedTables; Info->Signature; Info++)
{
if (ACPI_COMPARE_NAME (Signature, Info->Signature))
if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature))
{
return (Info);
}

View File

@ -747,6 +747,7 @@ AcpiGetTagPathname (
UINT8 ResourceTableIndex;
ACPI_SIZE RequiredSize;
char *Pathname;
char *PathnameEnd;
AML_RESOURCE *Aml;
ACPI_PARSE_OBJECT *Op;
char *InternalPath;
@ -809,19 +810,26 @@ AcpiGetTagPathname (
RequiredSize, FALSE);
/*
* Create the full path to the resource and tag by: remove the buffer name,
* append the resource descriptor name, append a dot, append the tag name.
* Create the full path to the resource and tag by:
* 1) Remove the buffer nameseg from the end of the pathname
* 2) Append the resource descriptor nameseg
* 3) Append a dot
* 4) Append the field tag nameseg
*
* TBD: Always using the full path is a bit brute force, the path can be
* Always using the full path is a bit brute force, the path can be
* often be optimized with carats (if the original buffer namepath is a
* single nameseg). This doesn't really matter, because these paths do not
* end up in the final compiled AML, it's just an appearance issue for the
* disassembled code.
*/
Pathname[strlen (Pathname) - ACPI_NAME_SIZE] = 0;
strncat (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE);
strcat (Pathname, ".");
strncat (Pathname, Tag, ACPI_NAME_SIZE);
PathnameEnd = Pathname + (RequiredSize - ACPI_NAMESEG_SIZE - 1);
ACPI_COPY_NAMESEG (PathnameEnd, ResourceNode->Name.Ascii);
PathnameEnd += ACPI_NAMESEG_SIZE;
*PathnameEnd = '.';
PathnameEnd++;
ACPI_COPY_NAMESEG (PathnameEnd, Tag);
/* Internalize the namepath to AML format */
@ -863,7 +871,7 @@ static void
AcpiDmUpdateResourceName (
ACPI_NAMESPACE_NODE *ResourceNode)
{
char Name[ACPI_NAME_SIZE];
char Name[ACPI_NAMESEG_SIZE];
/* Ignore if a unique name has already been assigned */

View File

@ -602,7 +602,7 @@ AcpiDmGetTableData (
for (Info = AcpiDmTableData; Info->Signature; Info++)
{
if (ACPI_COMPARE_NAME (Signature, Info->Signature))
if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature))
{
return (Info);
}
@ -657,7 +657,7 @@ AcpiDmDumpDataTable (
* Handle tables that don't use the common ACPI table header structure.
* Currently, these are the FACS, RSDP, and S3PT.
*/
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS))
if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS))
{
Length = Table->Length;
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs);
@ -670,7 +670,7 @@ AcpiDmDumpDataTable (
{
Length = AcpiDmDumpRsdp (Table);
}
else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT))
else if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT))
{
Length = AcpiDmDumpS3pt (Table);
}

View File

@ -281,7 +281,7 @@ AdCreateTableHeader (
/* Revision of DSDT controls the ACPI integer width */
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT))
if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT))
{
AcpiOsPrintf (" **** 32-bit table (V1), no 64-bit math support");
}

View File

@ -563,14 +563,14 @@ ApCheckForGpeNameConflict (
{
ACPI_PARSE_OBJECT *NextOp;
UINT32 GpeNumber;
char Name[ACPI_NAME_SIZE + 1];
char Target[ACPI_NAME_SIZE];
char Name[ACPI_NAMESEG_SIZE + 1];
char Target[ACPI_NAMESEG_SIZE];
/* Need a null-terminated string version of NameSeg */
ACPI_MOVE_32_TO_32 (Name, &Op->Asl.NameSeg);
Name[ACPI_NAME_SIZE] = 0;
Name[ACPI_NAMESEG_SIZE] = 0;
/*
* For a GPE method:
@ -622,7 +622,7 @@ ApCheckForGpeNameConflict (
if ((NextOp->Asl.ParseOpcode == PARSEOP_METHOD) ||
(NextOp->Asl.ParseOpcode == PARSEOP_NAME))
{
if (ACPI_COMPARE_NAME (Target, NextOp->Asl.NameSeg))
if (ACPI_COMPARE_NAMESEG (Target, NextOp->Asl.NameSeg))
{
/* Found both _Exy and _Lxy in the same scope, error */
@ -666,7 +666,7 @@ ApCheckRegMethod (
/* We are only interested in _REG methods */
if (!ACPI_COMPARE_NAME (METHOD_NAME__REG, &Op->Asl.NameSeg))
if (!ACPI_COMPARE_NAMESEG (METHOD_NAME__REG, &Op->Asl.NameSeg))
{
return;
}
@ -772,7 +772,7 @@ ApDeviceSubtreeWalk (
/* These are what we are looking for */
if (ACPI_COMPARE_NAME (Name, Op->Asl.NameSeg))
if (ACPI_COMPARE_NAMESEG (Name, Op->Asl.NameSeg))
{
return (AE_CTRL_TRUE);
}
@ -831,7 +831,7 @@ ApFindNameInScope (
if ((Next->Asl.ParseOpcode == PARSEOP_METHOD) ||
(Next->Asl.ParseOpcode == PARSEOP_NAME))
{
if (ACPI_COMPARE_NAME (Name, Next->Asl.NameSeg))
if (ACPI_COMPARE_NAMESEG (Name, Next->Asl.NameSeg))
{
return (TRUE);
}

View File

@ -523,6 +523,8 @@ CgWriteAmlOpcode (
*
* DESCRIPTION: Write a table header corresponding to the DEFINITIONBLOCK
*
* NOTE: Input strings should be validated before this function is invoked.
*
******************************************************************************/
static void
@ -534,6 +536,8 @@ CgWriteTableHeader (
ACPI_COMMENT_NODE *Current;
memset (&AslGbl_TableHeader, 0, sizeof (ACPI_TABLE_HEADER));
/* AML filename */
Child = Op->Asl.Child;
@ -552,11 +556,11 @@ CgWriteTableHeader (
*/
if (AcpiGbl_CaptureComments)
{
strncpy(AcpiGbl_TableSig, Child->Asl.Value.String, ACPI_NAME_SIZE);
ACPI_COPY_NAMESEG (AcpiGbl_TableSig, Child->Asl.Value.String);
Child->Asl.Value.String = ACPI_SIG_XXXX;
}
strncpy (AslGbl_TableHeader.Signature, Child->Asl.Value.String, ACPI_NAME_SIZE);
ACPI_COPY_NAMESEG (AslGbl_TableHeader.Signature, Child->Asl.Value.String);
/* Revision */
@ -573,12 +577,14 @@ CgWriteTableHeader (
/* OEMID */
Child = Child->Asl.Next;
strncpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, ACPI_OEM_ID_SIZE);
memcpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String,
strlen (Child->Asl.Value.String));
/* OEM TableID */
Child = Child->Asl.Next;
strncpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, ACPI_OEM_TABLE_ID_SIZE);
memcpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String,
strlen (Child->Asl.Value.String));
/* OEM Revision */
@ -587,7 +593,7 @@ CgWriteTableHeader (
/* Compiler ID */
ACPI_MOVE_NAME (AslGbl_TableHeader.AslCompilerId, ASL_CREATOR_ID);
ACPI_COPY_NAMESEG (AslGbl_TableHeader.AslCompilerId, ASL_CREATOR_ID);
/* Compiler version */

View File

@ -813,7 +813,7 @@ NamePathTail [.]{NameSeg}
{NameSeg} { char *s;
count (0);
s=UtLocalCacheCalloc (ACPI_NAME_SIZE + 1);
s=UtLocalCacheCalloc (ACPI_NAMESEG_SIZE + 1);
if (strcmp (AslCompilertext, "\\"))
{
/*

View File

@ -162,7 +162,7 @@
#define ASL_CREATOR_ID "INTL"
#define ASL_DEFINE "__IASL__"
#define ASL_PREFIX "iASL: "
#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.2A"
#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.3"
/* Configuration constants */

View File

@ -1239,7 +1239,7 @@ AslElevateException (
return (AE_LIMIT);
}
AslGbl_ElevatedMessages[AslGbl_ExpectedMessagesIndex] = MessageId;
AslGbl_ElevatedMessages[AslGbl_ElevatedMessagesIndex] = MessageId;
AslGbl_ElevatedMessagesIndex++;
return (AE_OK);
}

View File

@ -492,7 +492,7 @@ LdNamespace1Begin (
case AML_FIELD_OP:
Status = LdLoadFieldElements (Op, WalkState);
return (Status);
break;
case AML_INT_CONNECTION_OP:
@ -556,7 +556,8 @@ LdNamespace1Begin (
* We only want references to named objects:
* Store (2, WXYZ) -> Attempt to resolve the name
*/
if (OpInfo->Class == AML_CLASS_NAMED_OBJECT)
if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) &&
(OpInfo->Type != AML_TYPE_NAMED_FIELD))
{
return (AE_OK);
}
@ -702,7 +703,7 @@ LdNamespace1Begin (
/* However, this is an error -- operand to Scope must exist */
if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE)
if (strlen (Op->Asl.ExternalName) == ACPI_NAMESEG_SIZE)
{
AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
Op->Asl.ExternalName);
@ -731,7 +732,7 @@ LdNamespace1Begin (
* 10/2015.
*/
if ((Node->Flags & ANOBJ_IS_EXTERNAL) &&
(ACPI_COMPARE_NAME (AslGbl_TableSignature, "DSDT")))
(ACPI_COMPARE_NAMESEG (AslGbl_TableSignature, "DSDT")))
{
/* However, allowed if the reference is within a method */
@ -1095,7 +1096,7 @@ LdNamespace2Begin (
{
/* Standalone NameSeg vs. NamePath */
if (strlen (Arg->Asl.ExternalName) == ACPI_NAME_SIZE)
if (strlen (Arg->Asl.ExternalName) == ACPI_NAMESEG_SIZE)
{
AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
Arg->Asl.ExternalName);

View File

@ -342,7 +342,7 @@ const char *AslCompilerMsgs [] =
/* ASL_MSG_RANGE */ "Constant out of range",
/* ASL_MSG_BUFFER_ALLOCATION */ "Could not allocate line buffer",
/* ASL_MSG_MISSING_DEPENDENCY */ "Missing dependency",
/* ASL_MSG_ILLEGAL_FORWARD_REF */ "Illegal forward reference",
/* ASL_MSG_ILLEGAL_FORWARD_REF */ "Forward references are not supported by the ASL language",
/* ASL_MSG_ILLEGAL_METHOD_REF */ "Object is declared in a different method",
/* ASL_MSG_LOCAL_NOT_USED */ "Method Local is set but never used",
/* ASL_MSG_ARG_AS_LOCAL_NOT_USED */ "Method Argument (as a local) is set but never used",

View File

@ -228,7 +228,7 @@ MtMethodAnalysisWalkBegin (
* 1) _PS0 - One of these must exist: _PS1, _PS2, _PS3
* 2) _PS1/_PS2/_PS3: A _PS0 must exist
*/
if (ACPI_COMPARE_NAME (METHOD_NAME__PS0, Op->Asl.NameSeg))
if (ACPI_COMPARE_NAMESEG (METHOD_NAME__PS0, Op->Asl.NameSeg))
{
/* For _PS0, one of _PS1/_PS2/_PS3 must exist */
@ -241,9 +241,9 @@ MtMethodAnalysisWalkBegin (
}
}
else if (
ACPI_COMPARE_NAME (METHOD_NAME__PS1, Op->Asl.NameSeg) ||
ACPI_COMPARE_NAME (METHOD_NAME__PS2, Op->Asl.NameSeg) ||
ACPI_COMPARE_NAME (METHOD_NAME__PS3, Op->Asl.NameSeg))
ACPI_COMPARE_NAMESEG (METHOD_NAME__PS1, Op->Asl.NameSeg) ||
ACPI_COMPARE_NAMESEG (METHOD_NAME__PS2, Op->Asl.NameSeg) ||
ACPI_COMPARE_NAMESEG (METHOD_NAME__PS3, Op->Asl.NameSeg))
{
/* For _PS1/_PS2/_PS3, a _PS0 must exist */

View File

@ -258,7 +258,7 @@ LsAmlOffsetWalk (
/* Get offset of last nameseg and the actual data */
NamepathOffset = AslGbl_CurrentAmlOffset + Length +
(Op->Asl.FinalAmlLength - ACPI_NAME_SIZE);
(Op->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE);
DataOffset = AslGbl_CurrentAmlOffset + Length +
Op->Asl.FinalAmlLength;
@ -323,7 +323,7 @@ LsAmlOffsetWalk (
/* Get offset of last nameseg and the actual data */
NamepathOffset = AslGbl_CurrentAmlOffset + Length +
(NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
(NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE);
DataOffset = AslGbl_CurrentAmlOffset + Length +
(NextOp->Asl.FinalAmlLength + 1);
@ -370,7 +370,7 @@ LsAmlOffsetWalk (
/* Get offset of last nameseg and the actual data (flags byte) */
NamepathOffset = AslGbl_CurrentAmlOffset + Length +
(NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
(NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE);
DataOffset = AslGbl_CurrentAmlOffset + Length +
NextOp->Asl.FinalAmlLength;
@ -394,7 +394,7 @@ LsAmlOffsetWalk (
/* Get offset of last nameseg and the actual data (PBlock address) */
NamepathOffset = AslGbl_CurrentAmlOffset + Length +
(NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
(NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE);
DataOffset = AslGbl_CurrentAmlOffset + Length +
(NextOp->Asl.FinalAmlLength + 1);
@ -419,7 +419,7 @@ LsAmlOffsetWalk (
/* Get offset of last nameseg */
NamepathOffset = AslGbl_CurrentAmlOffset + Length +
(NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
(NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE);
LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, 0,
Op->Asl.ParseOpName, 0, (UINT8) 0, Op->Asl.AmlOpcode);

View File

@ -1087,13 +1087,13 @@ OpnDoDefinitionBlock (
if (Child->Asl.Value.String)
{
AslGbl_TableSignature = Child->Asl.Value.String;
if (strlen (AslGbl_TableSignature) != ACPI_NAME_SIZE)
if (strlen (AslGbl_TableSignature) != ACPI_NAMESEG_SIZE)
{
AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child,
"Length must be exactly 4 characters");
}
for (i = 0; i < ACPI_NAME_SIZE; i++)
for (i = 0; i < ACPI_NAMESEG_SIZE; i++)
{
if (!isalnum ((int) AslGbl_TableSignature[i]))
{

View File

@ -241,7 +241,7 @@ OptSearchToRoot (
* not match, and we cannot use this optimization.
*/
Path = &(((char *) TargetPath->Pointer)[
TargetPath->Length - ACPI_NAME_SIZE]);
TargetPath->Length - ACPI_NAMESEG_SIZE]);
ScopeInfo.Scope.Node = CurrentNode;
/* Lookup the NameSeg using SEARCH_PARENT (search-to-root) */
@ -275,7 +275,7 @@ OptSearchToRoot (
/* We must allocate a new string for the name (TargetPath gets deleted) */
*NewPath = UtLocalCacheCalloc (ACPI_NAME_SIZE + 1);
*NewPath = UtLocalCacheCalloc (ACPI_NAMESEG_SIZE + 1);
strcpy (*NewPath, Path);
if (strncmp (*NewPath, "_T_", 3))
@ -343,7 +343,7 @@ OptBuildShortestPath (
* can possibly have in common. (To optimize, we have to have at least 1)
*
* Note: The external NamePath string lengths are always a multiple of 5
* (ACPI_NAME_SIZE + separator)
* (ACPI_NAMESEG_SIZE + separator)
*/
MaxCommonSegments = TargetPath->Length / ACPI_PATH_SEGMENT_LENGTH;
if (CurrentPath->Length < TargetPath->Length)
@ -363,7 +363,7 @@ OptBuildShortestPath (
Index = (NumCommonSegments * ACPI_PATH_SEGMENT_LENGTH) + 1;
if (!ACPI_COMPARE_NAME (
if (!ACPI_COMPARE_NAMESEG (
&(ACPI_CAST_PTR (char, TargetPath->Pointer)) [Index],
&(ACPI_CAST_PTR (char, CurrentPath->Pointer)) [Index]))
{
@ -713,7 +713,7 @@ OptOptimizeNamePath (
* to be any possibility that it can be optimized to a shorter string
*/
AmlNameStringLength = strlen (AmlNameString);
if (AmlNameStringLength <= ACPI_NAME_SIZE)
if (AmlNameStringLength <= ACPI_NAMESEG_SIZE)
{
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS,
"NAMESEG %4.4s\n", AmlNameString));

View File

@ -578,7 +578,7 @@ ApCheckForPredefinedName (
ThisName = AcpiGbl_PredefinedMethods;
for (i = 0; ThisName->Info.Name[0]; i++)
{
if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name))
if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name))
{
/* Return index into predefined array */
return (i);
@ -592,7 +592,7 @@ ApCheckForPredefinedName (
ThisName = AcpiGbl_ResourceNames;
while (ThisName->Info.Name[0])
{
if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name))
if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name))
{
return (ACPI_PREDEFINED_NAME);
}
@ -603,7 +603,7 @@ ApCheckForPredefinedName (
ThisName = AcpiGbl_ScopeNames;
while (ThisName->Info.Name[0])
{
if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name))
if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name))
{
return (ACPI_PREDEFINED_NAME);
}

View File

@ -553,7 +553,7 @@ TrDoDefinitionBlock (
* to be at the root of the namespace; Therefore, namepath
* optimization can only be performed on the DSDT.
*/
if (!ACPI_COMPARE_NAME (Next->Asl.Value.String, ACPI_SIG_DSDT))
if (!ACPI_COMPARE_NAMESEG (Next->Asl.Value.String, ACPI_SIG_DSDT))
{
AslGbl_ReferenceOptimizationFlag = FALSE;
}

View File

@ -752,7 +752,7 @@ UtPadNameWithUnderscores (
UINT32 i;
for (i = 0; (i < ACPI_NAME_SIZE); i++)
for (i = 0; (i < ACPI_NAMESEG_SIZE); i++)
{
if (*NameSeg)
{
@ -823,7 +823,7 @@ UtAttachNameseg (
UtPadNameWithUnderscores (Name, PaddedNameSeg);
}
ACPI_MOVE_NAME (Op->Asl.NameSeg, PaddedNameSeg);
ACPI_COPY_NAMESEG (Op->Asl.NameSeg, PaddedNameSeg);
}

View File

@ -613,7 +613,8 @@ XfNamespaceLocateBegin (
(Op->Asl.ParseOpcode != PARSEOP_NAMESTRING) &&
(Op->Asl.ParseOpcode != PARSEOP_NAMESEG) &&
(Op->Asl.ParseOpcode != PARSEOP_METHODCALL) &&
(Op->Asl.ParseOpcode != PARSEOP_EXTERNAL))
(Op->Asl.ParseOpcode != PARSEOP_EXTERNAL) &&
(OpInfo->Type != AML_TYPE_NAMED_FIELD))
{
return_ACPI_STATUS (AE_OK);
}
@ -637,7 +638,8 @@ XfNamespaceLocateBegin (
if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) ||
(Op->Asl.ParseOpcode == PARSEOP_NAMESEG) ||
(Op->Asl.ParseOpcode == PARSEOP_METHODCALL) ||
(Op->Asl.ParseOpcode == PARSEOP_EXTERNAL))
(Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) ||
(OpInfo->Type == AML_TYPE_NAMED_FIELD))
{
/*
* These are name references, do not push the scope stack
@ -674,6 +676,10 @@ XfNamespaceLocateBegin (
Path = NextOp->Asl.Value.String;
}
else if (OpInfo->Type == AML_TYPE_NAMED_FIELD)
{
Path = Op->Asl.Child->Asl.Value.String;
}
else
{
Path = Op->Asl.Value.String;
@ -702,7 +708,7 @@ XfNamespaceLocateBegin (
* We didn't find the name reference by path -- we can qualify this
* a little better before we print an error message
*/
if (strlen (Path) == ACPI_NAME_SIZE)
if (strlen (Path) == ACPI_NAMESEG_SIZE)
{
/* A simple, one-segment ACPI name */
@ -764,7 +770,7 @@ XfNamespaceLocateBegin (
* doesn't exist or just can't be reached. However, we
* can differentiate between a NameSeg vs. NamePath.
*/
if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE)
if (strlen (Op->Asl.ExternalName) == ACPI_NAMESEG_SIZE)
{
AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
Op->Asl.ExternalName);

View File

@ -418,7 +418,7 @@ DtCompileDataTable (
* Currently, these are the FACS and RSDP. Also check for an OEMx table,
* these tables have user-defined contents.
*/
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS))
{
Status = DtCompileFacs (FieldList);
if (ACPI_FAILURE (Status))
@ -434,7 +434,7 @@ DtCompileDataTable (
Status = DtCompileRsdp (FieldList);
return (Status);
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_S3PT))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_S3PT))
{
Status = DtCompileS3pt (FieldList);
if (ACPI_FAILURE (Status))

View File

@ -204,11 +204,11 @@ AcpiUtIsSpecialTable (
char *Signature)
{
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_OSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS) ||
ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_OSDT) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_RSDP_NAME))
{
return (TRUE);
}
@ -346,7 +346,7 @@ DtCreateOneTemplateFile (
* 2) Signature must be a recognized ACPI table
* 3) There must be a template associated with the signature
*/
if (strlen (Signature) != ACPI_NAME_SIZE)
if (strlen (Signature) != ACPI_NAMESEG_SIZE)
{
fprintf (stderr,
"%s: Invalid ACPI table signature "
@ -567,7 +567,7 @@ DtCreateOneTemplate (
AcpiOsPrintf (" (AML byte code table)\n");
AcpiOsPrintf (" */\n");
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT))
{
Actual = DtEmitDefinitionBlock (
File, DisasmFilename, ACPI_SIG_DSDT, 1);
@ -590,7 +590,7 @@ DtCreateOneTemplate (
}
}
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT))
{
Actual = DtEmitDefinitionBlock (
File, DisasmFilename, ACPI_SIG_SSDT, 1);
@ -600,7 +600,7 @@ DtCreateOneTemplate (
goto Cleanup;
}
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_OSDT))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_OSDT))
{
Actual = DtEmitDefinitionBlock (
File, DisasmFilename, ACPI_SIG_OSDT, 1);
@ -610,12 +610,12 @@ DtCreateOneTemplate (
goto Cleanup;
}
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS))
{
AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER,
TemplateFacs));
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_RSDP_NAME))
{
AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER,
TemplateRsdp));

View File

@ -658,7 +658,7 @@ AcpiDbExecute (
/* Dump a _PLD buffer if present */
if (ACPI_COMPARE_NAME ((ACPI_CAST_PTR (ACPI_NAMESPACE_NODE,
if (ACPI_COMPARE_NAMESEG ((ACPI_CAST_PTR (ACPI_NAMESPACE_NODE,
AcpiGbl_DbMethodInfo.Method)->Name.Ascii),
METHOD_NAME__PLD))
{

View File

@ -557,7 +557,7 @@ AcpiDbFindNameInNamespace (
char *AcpiNamePtr = AcpiName;
if (strlen (NameArg) > ACPI_NAME_SIZE)
if (strlen (NameArg) > ACPI_NAMESEG_SIZE)
{
AcpiOsPrintf ("Name must be no longer than 4 characters\n");
return (AE_OK);

View File

@ -736,7 +736,7 @@ AcpiDmIsPldBuffer (
{
Node = ParentOp->Common.Node;
if (ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__PLD))
if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, METHOD_NAME__PLD))
{
/* Ignore the Size argument in the disassembly of this buffer op */
@ -770,7 +770,7 @@ AcpiDmIsPldBuffer (
{
Node = ParentOp->Common.Node;
if (ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__PLD))
if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, METHOD_NAME__PLD))
{
/* Ignore the Size argument in the disassembly of this buffer op */
@ -1100,7 +1100,7 @@ AcpiDmCheckForHardwareId (
/* Check for _HID - has one argument */
if (ACPI_COMPARE_NAME (&Name, METHOD_NAME__HID))
if (ACPI_COMPARE_NAMESEG (&Name, METHOD_NAME__HID))
{
AcpiDmGetHardwareIdType (NextOp);
return;
@ -1108,7 +1108,7 @@ AcpiDmCheckForHardwareId (
/* Exit if not _CID */
if (!ACPI_COMPARE_NAME (&Name, METHOD_NAME__CID))
if (!ACPI_COMPARE_NAMESEG (&Name, METHOD_NAME__CID))
{
return;
}

View File

@ -199,8 +199,8 @@ AcpiDmDumpName (
/* Remove all trailing underscores from the name */
Length = ACPI_NAME_SIZE;
for (i = (ACPI_NAME_SIZE - 1); i != 0; i--)
Length = ACPI_NAMESEG_SIZE;
for (i = (ACPI_NAMESEG_SIZE - 1); i != 0; i--)
{
if (NewName[i] == '_')
{
@ -378,7 +378,7 @@ AcpiDmNamestring (
AcpiOsPrintf (".");
}
Name += ACPI_NAME_SIZE;
Name += ACPI_NAMESEG_SIZE;
}
}

View File

@ -685,7 +685,7 @@ AcpiDsCreateField (
Info.RegionNode = RegionNode;
Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
if (Info.RegionNode->Type == ACPI_ADR_SPACE_PLATFORM_COMM &&
if (Info.RegionNode->Object->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM &&
!(RegionNode->Object->Field.InternalPccBuffer
= ACPI_ALLOCATE_ZEROED(Info.RegionNode->Object->Region.Length)))
{

View File

@ -359,7 +359,7 @@ AcpiDsInitializeObjects (
/* DSDT is always the first AML table */
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT))
if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT))
{
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT,
"\nInitializing Namespace objects:\n"));

View File

@ -447,7 +447,7 @@ AcpiEvMatchGpeMethod (
ACPI_STATUS Status;
UINT32 GpeNumber;
UINT8 TempGpeNumber;
char Name[ACPI_NAME_SIZE + 1];
char Name[ACPI_NAMESEG_SIZE + 1];
UINT8 Type;
@ -468,7 +468,7 @@ AcpiEvMatchGpeMethod (
* 1) Extract the method name and null terminate it
*/
ACPI_MOVE_32_TO_32 (Name, &MethodNode->Name.Integer);
Name[ACPI_NAME_SIZE] = 0;
Name[ACPI_NAMESEG_SIZE] = 0;
/* 2) Name must begin with an underscore */

View File

@ -207,11 +207,11 @@ AcpiExAllocateNameString (
{
/* Special case for root */
SizeNeeded = 1 + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1;
SizeNeeded = 1 + (ACPI_NAMESEG_SIZE * NumNameSegs) + 2 + 1;
}
else
{
SizeNeeded = PrefixCount + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1;
SizeNeeded = PrefixCount + (ACPI_NAMESEG_SIZE * NumNameSegs) + 2 + 1;
}
/*
@ -310,7 +310,7 @@ AcpiExNameSegment (
}
for (Index = 0;
(Index < ACPI_NAME_SIZE) && (AcpiUtValidNameChar (*AmlAddress, 0));
(Index < ACPI_NAMESEG_SIZE) && (AcpiUtValidNameChar (*AmlAddress, 0));
Index++)
{
CharBuf[Index] = *AmlAddress++;

View File

@ -851,7 +851,7 @@ AcpiNsLookup (
/* Point to next name segment and make this node current */
Path += ACPI_NAME_SIZE;
Path += ACPI_NAMESEG_SIZE;
CurrentNode = ThisNode;
}

View File

@ -236,7 +236,7 @@ AcpiNsPrintPathname (
AcpiOsPrintf ("?");
}
Pathname += ACPI_NAME_SIZE;
Pathname += ACPI_NAMESEG_SIZE;
NumSegments--;
if (NumSegments)
{

View File

@ -662,7 +662,7 @@ AcpiNsFindIniMethods (
/* We are only looking for methods named _INI */
if (!ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__INI))
if (!ACPI_COMPARE_NAMESEG (Node->Name.Ascii, METHOD_NAME__INI))
{
return (AE_OK);
}
@ -839,7 +839,7 @@ AcpiNsInitOneDevice (
* Note: We know there is an _INI within this subtree, but it may not be
* under this particular device, it may be lower in the branch.
*/
if (!ACPI_COMPARE_NAME (DeviceNode->Name.Ascii, "_SB_") ||
if (!ACPI_COMPARE_NAMESEG (DeviceNode->Name.Ascii, "_SB_") ||
DeviceNode->Parent != AcpiGbl_RootNode)
{
ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (

View File

@ -273,8 +273,8 @@ AcpiNsHandleToName (
/* Just copy the ACPI name from the Node and zero terminate it */
NodeName = AcpiUtGetNodeName (Node);
ACPI_MOVE_NAME (Buffer->Pointer, NodeName);
((char *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0;
ACPI_COPY_NAMESEG (Buffer->Pointer, NodeName);
((char *) Buffer->Pointer) [ACPI_NAMESEG_SIZE] = 0;
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%4.4s\n", (char *) Buffer->Pointer));
return_ACPI_STATUS (AE_OK);
@ -374,7 +374,7 @@ AcpiNsBuildNormalizedPath (
BOOLEAN NoTrailing)
{
UINT32 Length = 0, i;
char Name[ACPI_NAME_SIZE];
char Name[ACPI_NAMESEG_SIZE];
BOOLEAN DoNoTrailing;
char c, *Left, *Right;
ACPI_NAMESPACE_NODE *NextNode;
@ -657,7 +657,7 @@ AcpiNsNormalizePathname (
{
/* Do one nameseg at a time */
for (i = 0; (i < ACPI_NAME_SIZE) && *InputPath; i++)
for (i = 0; (i < ACPI_NAMESEG_SIZE) && *InputPath; i++)
{
if ((i == 0) || (*InputPath != '_')) /* First char is allowed to be underscore */
{

View File

@ -352,6 +352,11 @@ AcpiNsDetachObject (
}
}
if (ObjDesc->Common.Type == ACPI_TYPE_REGION)
{
AcpiUtRemoveAddressRange(ObjDesc->Region.SpaceId, Node);
}
/* Clear the Node entry in all cases */
Node->Object = NULL;

View File

@ -365,7 +365,7 @@ AcpiNsOneCompleteParse (
/* Found OSDT table, enable the namespace override feature */
if (ACPI_COMPARE_NAME(Table->Signature, ACPI_SIG_OSDT) &&
if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_OSDT) &&
PassNumber == ACPI_IMODE_LOAD_PASS1)
{
WalkState->NamespaceOverride = TRUE;

View File

@ -470,7 +470,7 @@ AcpiNsMatchSimpleRepair (
ThisName = AcpiObjectRepairInfo;
while (ThisName->ObjectConverter)
{
if (ACPI_COMPARE_NAME (Node->Name.Ascii, ThisName->Name))
if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, ThisName->Name))
{
/* Check if we can actually repair this name/type combination */

View File

@ -169,7 +169,7 @@ ACPI_STATUS (*ACPI_REPAIR_FUNCTION) (
typedef struct acpi_repair_info
{
char Name[ACPI_NAME_SIZE];
char Name[ACPI_NAMESEG_SIZE];
ACPI_REPAIR_FUNCTION RepairFunction;
} ACPI_REPAIR_INFO;
@ -358,7 +358,7 @@ AcpiNsMatchComplexRepair (
ThisName = AcpiNsRepairableNames;
while (ThisName->RepairFunction)
{
if (ACPI_COMPARE_NAME (Node->Name.Ascii, ThisName->Name))
if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, ThisName->Name))
{
return (ThisName);
}

View File

@ -351,7 +351,7 @@ AcpiNsGetInternalNameLength (
}
}
Info->Length = (ACPI_NAME_SIZE * Info->NumSegments) +
Info->Length = (ACPI_NAMESEG_SIZE * Info->NumSegments) +
4 + Info->NumCarats;
Info->NextExternalChar = NextExternalChar;
@ -443,7 +443,7 @@ AcpiNsBuildInternalName (
for (; NumSegments; NumSegments--)
{
for (i = 0; i < ACPI_NAME_SIZE; i++)
for (i = 0; i < ACPI_NAMESEG_SIZE; i++)
{
if (ACPI_IS_PATH_SEPARATOR (*ExternalName) ||
(*ExternalName == 0))
@ -472,7 +472,7 @@ AcpiNsBuildInternalName (
/* Move on the next segment */
ExternalName++;
Result += ACPI_NAME_SIZE;
Result += ACPI_NAMESEG_SIZE;
}
/* Terminate the string */
@ -721,12 +721,12 @@ AcpiNsExternalizeName (
/* Copy and validate the 4-char name segment */
ACPI_MOVE_NAME (&(*ConvertedName)[j],
ACPI_COPY_NAMESEG (&(*ConvertedName)[j],
&InternalName[NamesIndex]);
AcpiUtRepairName (&(*ConvertedName)[j]);
j += ACPI_NAME_SIZE;
NamesIndex += ACPI_NAME_SIZE;
j += ACPI_NAMESEG_SIZE;
NamesIndex += ACPI_NAMESEG_SIZE;
}
}

View File

@ -691,8 +691,8 @@ AcpiInstallMethod (
/* Table must be a DSDT or SSDT */
if (!ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) &&
!ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT))
if (!ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT) &&
!ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_SSDT))
{
return (AE_BAD_HEADER);
}

View File

@ -314,21 +314,21 @@ AcpiPsGetNextNamestring (
/* Two name segments */
End += 1 + (2 * ACPI_NAME_SIZE);
End += 1 + (2 * ACPI_NAMESEG_SIZE);
break;
case AML_MULTI_NAME_PREFIX:
/* Multiple name segments, 4 chars each, count in next byte */
End += 2 + (*(End + 1) * ACPI_NAME_SIZE);
End += 2 + (*(End + 1) * ACPI_NAMESEG_SIZE);
break;
default:
/* Single name segment */
End += ACPI_NAME_SIZE;
End += ACPI_NAMESEG_SIZE;
break;
}
@ -708,7 +708,7 @@ AcpiPsGetNextField (
ACPI_MOVE_32_TO_32 (&Name, ParserState->Aml);
AcpiPsSetName (Field, Name);
ParserState->Aml += ACPI_NAME_SIZE;
ParserState->Aml += ACPI_NAMESEG_SIZE;
ASL_CV_CAPTURE_COMMENTS_ONLY (ParserState);

View File

@ -825,10 +825,10 @@ AcpiWalkResources (
/* Parameter validation */
if (!DeviceHandle || !UserFunction || !Name ||
(!ACPI_COMPARE_NAME (Name, METHOD_NAME__CRS) &&
!ACPI_COMPARE_NAME (Name, METHOD_NAME__PRS) &&
!ACPI_COMPARE_NAME (Name, METHOD_NAME__AEI) &&
!ACPI_COMPARE_NAME (Name, METHOD_NAME__DMA)))
(!ACPI_COMPARE_NAMESEG (Name, METHOD_NAME__CRS) &&
!ACPI_COMPARE_NAMESEG (Name, METHOD_NAME__PRS) &&
!ACPI_COMPARE_NAMESEG (Name, METHOD_NAME__AEI) &&
!ACPI_COMPARE_NAMESEG (Name, METHOD_NAME__DMA)))
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}

View File

@ -676,7 +676,7 @@ AcpiTbVerifyTempTable (
/* If a particular signature is expected (DSDT/FACS), it must match */
if (Signature &&
!ACPI_COMPARE_NAME (&TableDesc->Signature, Signature))
!ACPI_COMPARE_NAMESEG (&TableDesc->Signature, Signature))
{
ACPI_BIOS_ERROR ((AE_INFO,
"Invalid signature 0x%X for ACPI table, expected [%s]",

View File

@ -207,7 +207,7 @@ AcpiTbFindTable (
/* Normalize the input strings */
memset (&Header, 0, sizeof (ACPI_TABLE_HEADER));
ACPI_MOVE_NAME (Header.Signature, Signature);
ACPI_COPY_NAMESEG (Header.Signature, Signature);
strncpy (Header.OemId, OemId, ACPI_OEM_ID_SIZE);
strncpy (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE);
@ -217,7 +217,7 @@ AcpiTbFindTable (
for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
{
if (memcmp (&(AcpiGbl_RootTableList.Tables[i].Signature),
Header.Signature, ACPI_NAME_SIZE))
Header.Signature, ACPI_NAMESEG_SIZE))
{
/* Not the requested table */
@ -245,7 +245,7 @@ AcpiTbFindTable (
/* Check for table match on all IDs */
if (!memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->Signature,
Header.Signature, ACPI_NAME_SIZE) &&
Header.Signature, ACPI_NAMESEG_SIZE) &&
(!OemId[0] ||
!memcmp (AcpiGbl_RootTableList.Tables[i].Pointer->OemId,
Header.OemId, ACPI_OEM_ID_SIZE)) &&

View File

@ -274,7 +274,7 @@ AcpiTbInstallStandardTable (
*/
if (!Reload &&
AcpiGbl_DisableSsdtTableInstall &&
ACPI_COMPARE_NAME (&NewTableDesc.Signature, ACPI_SIG_SSDT))
ACPI_COMPARE_NAMESEG (&NewTableDesc.Signature, ACPI_SIG_SSDT))
{
ACPI_INFO ((
"Ignoring installation of %4.4s at %8.8X%8.8X",

View File

@ -225,10 +225,10 @@ AcpiTbCleanupTableHeader (
memcpy (OutHeader, Header, sizeof (ACPI_TABLE_HEADER));
AcpiTbFixString (OutHeader->Signature, ACPI_NAME_SIZE);
AcpiTbFixString (OutHeader->Signature, ACPI_NAMESEG_SIZE);
AcpiTbFixString (OutHeader->OemId, ACPI_OEM_ID_SIZE);
AcpiTbFixString (OutHeader->OemTableId, ACPI_OEM_TABLE_ID_SIZE);
AcpiTbFixString (OutHeader->AslCompilerId, ACPI_NAME_SIZE);
AcpiTbFixString (OutHeader->AslCompilerId, ACPI_NAMESEG_SIZE);
}
@ -253,7 +253,7 @@ AcpiTbPrintTableHeader (
ACPI_TABLE_HEADER LocalHeader;
if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_FACS))
if (ACPI_COMPARE_NAMESEG (Header->Signature, ACPI_SIG_FACS))
{
/* FACS only has signature and length fields */
@ -320,8 +320,8 @@ AcpiTbVerifyChecksum (
* They are the odd tables, have no standard ACPI header and no checksum
*/
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT) ||
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS))
if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT) ||
ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS))
{
return (AE_OK);
}

View File

@ -503,7 +503,7 @@ AcpiTbParseRootTable (
ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex);
if (ACPI_SUCCESS (Status) &&
ACPI_COMPARE_NAME (
ACPI_COMPARE_NAMESEG (
&AcpiGbl_RootTableList.Tables[TableIndex].Signature,
ACPI_SIG_FADT))
{

View File

@ -401,7 +401,7 @@ AcpiGetTableHeader (
for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++)
{
if (!ACPI_COMPARE_NAME (
if (!ACPI_COMPARE_NAMESEG (
&(AcpiGbl_RootTableList.Tables[i].Signature), Signature))
{
continue;
@ -504,7 +504,7 @@ AcpiGetTable (
{
TableDesc = &AcpiGbl_RootTableList.Tables[i];
if (!ACPI_COMPARE_NAME (&TableDesc->Signature, Signature))
if (!ACPI_COMPARE_NAMESEG (&TableDesc->Signature, Signature))
{
continue;
}

View File

@ -275,7 +275,7 @@ AcpiTbLoadNamespace (
Table = &AcpiGbl_RootTableList.Tables[AcpiGbl_DsdtIndex];
if (!AcpiGbl_RootTableList.CurrentTableCount ||
!ACPI_COMPARE_NAME (Table->Signature.Ascii, ACPI_SIG_DSDT) ||
!ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_DSDT) ||
ACPI_FAILURE (AcpiTbValidateTable (Table)))
{
Status = AE_NO_ACPI_TABLES;
@ -334,9 +334,9 @@ AcpiTbLoadNamespace (
Table = &AcpiGbl_RootTableList.Tables[i];
if (!Table->Address ||
(!ACPI_COMPARE_NAME (Table->Signature.Ascii, ACPI_SIG_SSDT) &&
!ACPI_COMPARE_NAME (Table->Signature.Ascii, ACPI_SIG_PSDT) &&
!ACPI_COMPARE_NAME (Table->Signature.Ascii, ACPI_SIG_OSDT)) ||
(!ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_SSDT) &&
!ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_PSDT) &&
!ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_OSDT)) ||
ACPI_FAILURE (AcpiTbValidateTable (Table)))
{
continue;
@ -556,7 +556,7 @@ AcpiUnloadParentTable (
* only these types can contain AML and thus are the only types
* that can create namespace objects.
*/
if (ACPI_COMPARE_NAME (
if (ACPI_COMPARE_NAMESEG (
AcpiGbl_RootTableList.Tables[i].Signature.Ascii,
ACPI_SIG_DSDT))
{

View File

@ -176,7 +176,7 @@ AcpiUtValidNameseg (
/* Validate each character in the signature */
for (i = 0; i < ACPI_NAME_SIZE; i++)
for (i = 0; i < ACPI_NAMESEG_SIZE; i++)
{
if (!AcpiUtValidNameChar (Name[i], i))
{

View File

@ -214,17 +214,17 @@ const UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] =
const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
{
"SystemMemory", /* 0x00 */
"SystemIO", /* 0x01 */
"PCI_Config", /* 0x02 */
"EmbeddedControl", /* 0x03 */
"SMBus", /* 0x04 */
"SystemCMOS", /* 0x05 */
"PCIBARTarget", /* 0x06 */
"IPMI", /* 0x07 */
"GeneralPurposeIo", /* 0x08 */
"GenericSerialBus", /* 0x09 */
"PCC" /* 0x0A */
"SystemMemory", /* 0x00 */
"SystemIO", /* 0x01 */
"PCI_Config", /* 0x02 */
"EmbeddedControl", /* 0x03 */
"SMBus", /* 0x04 */
"SystemCMOS", /* 0x05 */
"PCIBARTarget", /* 0x06 */
"IPMI", /* 0x07 */
"GeneralPurposeIo", /* 0x08 */
"GenericSerialBus", /* 0x09 */
"PlatformCommChannel"/* 0x0A */
};
@ -416,7 +416,7 @@ AcpiUtGetNodeName (
ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object;
/* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
/* Must return a string of exactly 4 characters == ACPI_NAMESEG_SIZE */
if (!Object)
{

View File

@ -214,10 +214,10 @@ AcpiUtIsAmlTable (
/* These are the only tables that contain executable AML */
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) ||
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) ||
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT) ||
if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_PSDT) ||
ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_SSDT) ||
ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_OSDT) ||
ACPI_IS_OEM_SIG (Table->Signature))
{
return (TRUE);

View File

@ -237,7 +237,7 @@ AcpiUtMatchPredefinedMethod (
ThisName = AcpiGbl_PredefinedMethods;
while (ThisName->Info.Name[0])
{
if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name))
if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name))
{
return (ThisName);
}
@ -374,7 +374,7 @@ AcpiUtMatchResourceName (
ThisName = AcpiGbl_ResourceNames;
while (ThisName->Info.Name[0])
{
if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name))
if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name))
{
return (ThisName);
}

View File

@ -303,16 +303,16 @@ AcpiUtRepairName (
* Special case for the root node. This can happen if we get an
* error during the execution of module-level code.
*/
if (ACPI_COMPARE_NAME (Name, ACPI_ROOT_PATHNAME))
if (ACPI_COMPARE_NAMESEG (Name, ACPI_ROOT_PATHNAME))
{
return;
}
ACPI_MOVE_NAME (&OriginalName, Name);
ACPI_COPY_NAMESEG (&OriginalName, Name);
/* Check each character in the name */
for (i = 0; i < ACPI_NAME_SIZE; i++)
for (i = 0; i < ACPI_NAMESEG_SIZE; i++)
{
if (AcpiUtValidNameChar (Name[i], i))
{

View File

@ -480,7 +480,7 @@ ACPI_STATUS (*ACPI_INTERNAL_METHOD) (
*/
typedef struct acpi_name_info
{
char Name[ACPI_NAME_SIZE];
char Name[ACPI_NAMESEG_SIZE];
UINT16 ArgumentList;
UINT8 ExpectedBtypes;
@ -568,7 +568,7 @@ typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) (
typedef struct acpi_simple_repair_info
{
char Name[ACPI_NAME_SIZE];
char Name[ACPI_NAMESEG_SIZE];
UINT32 UnexpectedBtypes;
UINT32 PackageIndex;
ACPI_OBJECT_CONVERTER ObjectConverter;

View File

@ -154,7 +154,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
#define ACPI_CA_VERSION 0x20190215
#define ACPI_CA_VERSION 0x20190329
#include "acconfig.h"
#include "actypes.h"

View File

@ -213,14 +213,14 @@
typedef struct acpi_table_header
{
char Signature[ACPI_NAME_SIZE]; /* ASCII table signature */
char Signature[ACPI_NAMESEG_SIZE]; /* ASCII table signature */
UINT32 Length; /* Length of table in bytes, including this header */
UINT8 Revision; /* ACPI Specification minor version number */
UINT8 Checksum; /* To make sum of entire table == 0 */
char OemId[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */
char OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */
UINT32 OemRevision; /* OEM revision number */
char AslCompilerId[ACPI_NAME_SIZE]; /* ASCII ASL compiler vendor ID */
char AslCompilerId[ACPI_NAMESEG_SIZE]; /* ASCII ASL compiler vendor ID */
UINT32 AslCompilerRevision; /* ASL compiler version */
} ACPI_TABLE_HEADER;

View File

@ -520,7 +520,7 @@ typedef UINT64 ACPI_PHYSICAL_ADDRESS;
/* Names within the namespace are 4 bytes long */
#define ACPI_NAME_SIZE 4
#define ACPI_NAMESEG_SIZE 4 /* Fixed by ACPI spec */
#define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */
#define ACPI_PATH_SEPARATOR '.'
@ -666,11 +666,11 @@ typedef UINT64 ACPI_INTEGER;
/* Optimizations for 4-character (32-bit) ACPI_NAME manipulation */
#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
#define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b)))
#define ACPI_MOVE_NAME(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src)))
#define ACPI_COMPARE_NAMESEG(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b)))
#define ACPI_COPY_NAMESEG(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src)))
#else
#define ACPI_COMPARE_NAME(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE))
#define ACPI_MOVE_NAME(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAME_SIZE))
#define ACPI_COMPARE_NAMESEG(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAMESEG_SIZE))
#define ACPI_COPY_NAMESEG(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE))
#endif
/* Support for the special RSDP signature (8 characters) */
@ -680,7 +680,7 @@ typedef UINT64 ACPI_INTEGER;
/* Support for OEMx signature (x can be any character) */
#define ACPI_IS_OEM_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_OEM_NAME, 3) &&\
strnlen (a, ACPI_NAME_SIZE) == ACPI_NAME_SIZE)
strnlen (a, ACPI_NAMESEG_SIZE) == ACPI_NAMESEG_SIZE)
/*
* Algorithm to obtain access bit width.

View File

@ -221,6 +221,11 @@
#define ACPI_NO_ERROR_MESSAGES
#undef ACPI_DEBUG_OUTPUT
/* Use a specific bugging default separate from ACPICA */
#undef ACPI_DEBUG_DEFAULT
#define ACPI_DEBUG_DEFAULT (ACPI_LV_INFO | ACPI_LV_REPAIR)
/* External interface for __KERNEL__, stub is needed */
#define ACPI_EXTERNAL_RETURN_STATUS(Prototype) \

View File

@ -319,8 +319,8 @@ AcpiOsGetTableByName (
/* Instance is only valid for SSDT/UEFI tables */
if (Instance &&
!ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT) &&
!ACPI_COMPARE_NAME (Signature, ACPI_SIG_UEFI))
!ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT) &&
!ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_UEFI))
{
return (AE_LIMIT);
}
@ -337,7 +337,7 @@ AcpiOsGetTableByName (
* If one of the main ACPI tables was requested (RSDT/XSDT/FADT),
* simply return it immediately.
*/
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_XSDT))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_XSDT))
{
if (!Gbl_Revision)
{
@ -349,7 +349,7 @@ AcpiOsGetTableByName (
return (AE_OK);
}
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_RSDT))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_RSDT))
{
if (!Gbl_Rsdp.RsdtPhysicalAddress)
{
@ -361,7 +361,7 @@ AcpiOsGetTableByName (
return (AE_OK);
}
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FADT))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FADT))
{
*Address = Gbl_FadtAddress;
*Table = (ACPI_TABLE_HEADER *) Gbl_Fadt;
@ -688,15 +688,15 @@ OslGetTableViaRoot (
/* DSDT and FACS address must be extracted from the FADT */
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS))
{
/*
* Get the appropriate address, either 32-bit or 64-bit. Be very
* careful about the FADT length and validate table addresses.
* Note: The 64-bit addresses have priority.
*/
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT))
{
if ((Gbl_Fadt->Header.Length >= MIN_FADT_FOR_XDSDT) &&
Gbl_Fadt->XDsdt)
@ -759,7 +759,7 @@ OslGetTableViaRoot (
/* Does this table match the requested signature? */
if (ACPI_COMPARE_NAME (MappedTable->Signature, Signature))
if (ACPI_COMPARE_NAMESEG (MappedTable->Signature, Signature))
{
/* Match table instance (for SSDT/UEFI tables) */
@ -862,18 +862,18 @@ OslAddTablesToList(
case 1:
ACPI_MOVE_NAME (NewInfo->Signature,
ACPI_COPY_NAMESEG (NewInfo->Signature,
Gbl_Revision ? ACPI_SIG_XSDT : ACPI_SIG_RSDT);
break;
case 2:
ACPI_MOVE_NAME (NewInfo->Signature, ACPI_SIG_FACS);
ACPI_COPY_NAMESEG (NewInfo->Signature, ACPI_SIG_FACS);
break;
default:
ACPI_MOVE_NAME (NewInfo->Signature, ACPI_SIG_DSDT);
ACPI_COPY_NAMESEG (NewInfo->Signature, ACPI_SIG_DSDT);
}
@ -919,7 +919,7 @@ OslAddTablesToList(
while (NewInfo->Next != NULL)
{
NewInfo = NewInfo->Next;
if (ACPI_COMPARE_NAME (Table->Signature, NewInfo->Signature))
if (ACPI_COMPARE_NAMESEG (Table->Signature, NewInfo->Signature))
{
Instance++;
}
@ -932,7 +932,7 @@ OslAddTablesToList(
return (AE_NO_MEMORY);
}
ACPI_MOVE_NAME (NewInfo->Signature, Table->Signature);
ACPI_COPY_NAMESEG (NewInfo->Signature, Table->Signature);
AcpiOsUnmapMemory (Table, sizeof (*Table));
@ -994,7 +994,7 @@ OslMapTable (
/* If specified, signature must match */
if (Signature &&
!ACPI_COMPARE_NAME (Signature, MappedTable->Signature))
!ACPI_COMPARE_NAMESEG (Signature, MappedTable->Signature))
{
AcpiOsUnmapMemory (MappedTable, sizeof (*MappedTable));
return (AE_NOT_EXIST);

View File

@ -167,7 +167,7 @@ typedef struct osl_table_info
{
struct osl_table_info *Next;
UINT32 Instance;
char Signature[ACPI_NAME_SIZE];
char Signature[ACPI_NAMESEG_SIZE];
} OSL_TABLE_INFO;
@ -484,7 +484,7 @@ OslAddTableToList (
return (AE_NO_MEMORY);
}
ACPI_MOVE_NAME (NewInfo->Signature, Signature);
ACPI_COPY_NAMESEG (NewInfo->Signature, Signature);
if (!Gbl_TableListHead)
{
@ -495,7 +495,7 @@ OslAddTableToList (
Next = Gbl_TableListHead;
while (1)
{
if (ACPI_COMPARE_NAME (Next->Signature, Signature))
if (ACPI_COMPARE_NAMESEG (Next->Signature, Signature))
{
if (Next->Instance == Instance)
{
@ -1050,11 +1050,11 @@ OslGetBiosTable (
/* Handle special tables whose addresses are not in RSDT/XSDT */
if (ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_RSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_XSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_RSDP_NAME) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_RSDT) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_XSDT) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT) ||
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS))
{
FindNextInstance:
@ -1066,7 +1066,7 @@ OslGetBiosTable (
* careful about the FADT length and validate table addresses.
* Note: The 64-bit addresses have priority.
*/
if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT))
if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT))
{
if (CurrentInstance < 2)
{
@ -1082,7 +1082,7 @@ OslGetBiosTable (
}
}
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS))
{
if (CurrentInstance < 2)
{
@ -1098,7 +1098,7 @@ OslGetBiosTable (
}
}
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_XSDT))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_XSDT))
{
if (!Gbl_Revision)
{
@ -1110,7 +1110,7 @@ OslGetBiosTable (
(ACPI_PHYSICAL_ADDRESS) Gbl_Rsdp.XsdtPhysicalAddress;
}
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_RSDT))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_RSDT))
{
if (CurrentInstance == 0)
{
@ -1206,7 +1206,7 @@ OslGetBiosTable (
/* Does this table match the requested signature? */
if (!ACPI_COMPARE_NAME (MappedTable->Signature, Signature))
if (!ACPI_COMPARE_NAMESEG (MappedTable->Signature, Signature))
{
OslUnmapTable (MappedTable);
MappedTable = NULL;
@ -1277,7 +1277,7 @@ OslListCustomizedTables (
{
void *TableDir;
UINT32 Instance;
char TempName[ACPI_NAME_SIZE];
char TempName[ACPI_NAMESEG_SIZE];
char *Filename;
ACPI_STATUS Status = AE_OK;
@ -1377,7 +1377,7 @@ OslMapTable (
return (AE_BAD_SIGNATURE);
}
}
else if (!ACPI_COMPARE_NAME (Signature, MappedTable->Signature))
else if (!ACPI_COMPARE_NAMESEG (Signature, MappedTable->Signature))
{
AcpiOsUnmapMemory (MappedTable, sizeof (ACPI_TABLE_HEADER));
return (AE_BAD_SIGNATURE);
@ -1457,18 +1457,18 @@ OslTableNameFromFile (
/* Ignore meaningless files */
if (strlen (Filename) < ACPI_NAME_SIZE)
if (strlen (Filename) < ACPI_NAMESEG_SIZE)
{
return (AE_BAD_SIGNATURE);
}
/* Extract instance number */
if (isdigit ((int) Filename[ACPI_NAME_SIZE]))
if (isdigit ((int) Filename[ACPI_NAMESEG_SIZE]))
{
sscanf (&Filename[ACPI_NAME_SIZE], "%u", Instance);
sscanf (&Filename[ACPI_NAMESEG_SIZE], "%u", Instance);
}
else if (strlen (Filename) != ACPI_NAME_SIZE)
else if (strlen (Filename) != ACPI_NAMESEG_SIZE)
{
return (AE_BAD_SIGNATURE);
}
@ -1479,7 +1479,7 @@ OslTableNameFromFile (
/* Extract signature */
ACPI_MOVE_NAME (Signature, Filename);
ACPI_COPY_NAMESEG (Signature, Filename);
return (AE_OK);
}
@ -1549,7 +1549,7 @@ OslReadTableFromFile (
goto Exit;
}
}
else if (!ACPI_COMPARE_NAME (Signature, Header.Signature))
else if (!ACPI_COMPARE_NAMESEG (Signature, Header.Signature))
{
fprintf (stderr, "Incorrect signature: Expecting %4.4s, found %4.4s\n",
Signature, Header.Signature);
@ -1629,7 +1629,7 @@ OslGetCustomizedTable (
{
void *TableDir;
UINT32 CurrentInstance = 0;
char TempName[ACPI_NAME_SIZE];
char TempName[ACPI_NAMESEG_SIZE];
char TableFilename[PATH_MAX];
char *Filename;
ACPI_STATUS Status;
@ -1649,7 +1649,7 @@ OslGetCustomizedTable (
{
/* Ignore meaningless files */
if (!ACPI_COMPARE_NAME (Filename, Signature))
if (!ACPI_COMPARE_NAMESEG (Filename, Signature))
{
continue;
}

View File

@ -299,7 +299,8 @@ AcpiOsGetTableByIndex (
{
*Instance = Index;
}
else if (Status == AE_NOT_FOUND && ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT))
else if (Status == AE_NOT_FOUND &&
ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT))
{
/* Treat SSDTs that are not found as invalid index. */
Status = (AE_LIMIT);
@ -353,7 +354,7 @@ AcpiOsGetTableByName (
/* Multiple instances are only supported for SSDT tables. */
if (Instance > 0 && !ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT))
if (Instance > 0 && !ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT))
{
return (AE_LIMIT);
}
@ -374,7 +375,7 @@ AcpiOsGetTableByName (
* OEM ID, Table ID and Revision, then the 29th entry will overwrite the
* first entry... Let's hope that we do not have that many entries.
*/
if (Instance > 0 && ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT))
if (Instance > 0 && ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT))
{
if (Instance < 10)
{
@ -403,15 +404,15 @@ AcpiOsGetTableByName (
*
* This code allows for both.
*/
if (ACPI_COMPARE_NAME (Signature, "FACP"))
if (ACPI_COMPARE_NAMESEG (Signature, "FACP"))
{
Signature = "FADT";
}
else if (ACPI_COMPARE_NAME (Signature, "XSDT"))
else if (ACPI_COMPARE_NAMESEG (Signature, "XSDT"))
{
Signature = "RSDT";
}
else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT))
else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT))
{
/* SSDT may not be present on older Windows versions, but it is
* also possible that the index is not found. */

View File

@ -173,7 +173,7 @@
UINT64 TimerFrequency;
char TableName[ACPI_NAME_SIZE + 1];
char TableName[ACPI_NAMESEG_SIZE + 1];
#define ACPI_OS_DEBUG_TIMEOUT 30000 /* 30 seconds */

View File

@ -475,7 +475,7 @@ int
ApDumpTableByName (
char *Signature)
{
char LocalSignature [ACPI_NAME_SIZE + 1];
char LocalSignature [ACPI_NAMESEG_SIZE + 1];
UINT32 Instance;
ACPI_TABLE_HEADER *Table;
ACPI_PHYSICAL_ADDRESS Address;
@ -483,7 +483,7 @@ ApDumpTableByName (
int TableStatus;
if (strlen (Signature) != ACPI_NAME_SIZE)
if (strlen (Signature) != ACPI_NAMESEG_SIZE)
{
fprintf (stderr,
"Invalid table signature [%s]: must be exactly 4 characters\n",
@ -498,11 +498,11 @@ ApDumpTableByName (
/* To be friendly, handle tables whose signatures do not match the name */
if (ACPI_COMPARE_NAME (LocalSignature, "FADT"))
if (ACPI_COMPARE_NAMESEG (LocalSignature, "FADT"))
{
strcpy (LocalSignature, ACPI_SIG_FADT);
}
else if (ACPI_COMPARE_NAME (LocalSignature, "MADT"))
else if (ACPI_COMPARE_NAMESEG (LocalSignature, "MADT"))
{
strcpy (LocalSignature, ACPI_SIG_MADT);
}

View File

@ -257,7 +257,7 @@ ApWriteToBinaryFile (
ACPI_TABLE_HEADER *Table,
UINT32 Instance)
{
char Filename[ACPI_NAME_SIZE + 16];
char Filename[ACPI_NAMESEG_SIZE + 16];
char InstanceStr [16];
ACPI_FILE File;
ACPI_SIZE Actual;
@ -272,18 +272,18 @@ ApWriteToBinaryFile (
if (ACPI_VALIDATE_RSDP_SIG (Table->Signature))
{
ACPI_MOVE_NAME (Filename, ACPI_RSDP_NAME);
ACPI_COPY_NAMESEG (Filename, ACPI_RSDP_NAME);
}
else
{
ACPI_MOVE_NAME (Filename, Table->Signature);
ACPI_COPY_NAMESEG (Filename, Table->Signature);
}
Filename[0] = (char) tolower ((int) Filename[0]);
Filename[1] = (char) tolower ((int) Filename[1]);
Filename[2] = (char) tolower ((int) Filename[2]);
Filename[3] = (char) tolower ((int) Filename[3]);
Filename[ACPI_NAME_SIZE] = 0;
Filename[ACPI_NAMESEG_SIZE] = 0;
/* Handle multiple SSDTs - create different filenames for each */

View File

@ -287,6 +287,10 @@ void
AeMiscellaneousTests (
void);
void
AeLateTest (
void);
/* aeregion */
ACPI_STATUS

View File

@ -206,7 +206,7 @@ AeExceptionHandler (
if (Name)
{
if (ACPI_COMPARE_NAME (&Name, ACPI_ROOT_PATHNAME))
if (ACPI_COMPARE_NAMESEG (&Name, ACPI_ROOT_PATHNAME))
{
AcpiOsPrintf (AE_PREFIX
"Evaluating executable code at [%s]\n", ACPI_NAMESPACE_ROOT);

View File

@ -840,6 +840,7 @@ main (
ExitCode = 0;
ErrorExit:
AeLateTest ();
(void) AcpiTerminate ();
AcDeleteTableList (ListHead);
AcpiOsFree (AcpiGbl_InitEntries);

View File

@ -220,14 +220,14 @@ AeTableOverride (
/* This code exercises the table override mechanism in the core */
if (ACPI_COMPARE_NAME (ExistingTable->Signature, ACPI_SIG_DSDT))
if (ACPI_COMPARE_NAMESEG (ExistingTable->Signature, ACPI_SIG_DSDT))
{
*NewTable = DsdtToInstallOverride;
}
/* This code tests override of dynamically loaded tables */
else if (ACPI_COMPARE_NAME (ExistingTable->Signature, "OEM9"))
else if (ACPI_COMPARE_NAMESEG (ExistingTable->Signature, "OEM9"))
{
*NewTable = ACPI_CAST_PTR (ACPI_TABLE_HEADER, Ssdt3Code);
}
@ -255,13 +255,13 @@ AeInitializeTableHeader (
UINT32 Length)
{
ACPI_MOVE_NAME (Header->Signature, Signature);
ACPI_COPY_NAMESEG (Header->Signature, Signature);
Header->Length = Length;
Header->OemRevision = 0x1001;
memcpy (Header->OemId, "Intel ", ACPI_OEM_ID_SIZE);
memcpy (Header->OemTableId, "AcpiExec", ACPI_OEM_TABLE_ID_SIZE);
ACPI_MOVE_NAME (Header->AslCompilerId, "INTL");
ACPI_COPY_NAMESEG (Header->AslCompilerId, "INTL");
Header->AslCompilerRevision = ACPI_CA_VERSION;
/* Set the checksum, must set to zero first */
@ -306,8 +306,8 @@ AeBuildLocalTables (
NextTable = ListHead;
while (NextTable)
{
if (!ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT) &&
!ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT))
if (!ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_DSDT) &&
!ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_FADT))
{
TableCount++;
}
@ -345,7 +345,7 @@ AeBuildLocalTables (
* Incoming DSDT or FADT are special cases. All other tables are
* just immediately installed into the XSDT.
*/
if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT))
if (ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_DSDT))
{
if (DsdtAddress)
{
@ -358,7 +358,7 @@ AeBuildLocalTables (
DsdtAddress = ACPI_PTR_TO_PHYSADDR (NextTable->Table);
DsdtToInstallOverride = NextTable->Table;
}
else if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT))
else if (ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_FADT))
{
ExternalFadt = ACPI_CAST_PTR (ACPI_TABLE_FADT, NextTable->Table);
LocalXSDT->TableOffsetEntry[0] = ACPI_PTR_TO_PHYSADDR (NextTable->Table);
@ -531,7 +531,7 @@ AeBuildLocalTables (
/* Build a FACS */
memset (&LocalFACS, 0, sizeof (ACPI_TABLE_FACS));
ACPI_MOVE_NAME (LocalFACS.Signature, ACPI_SIG_FACS);
ACPI_COPY_NAMESEG (LocalFACS.Signature, ACPI_SIG_FACS);
LocalFACS.Length = sizeof (ACPI_TABLE_FACS);
LocalFACS.GlobalLock = 0x11AA0011;
@ -545,7 +545,7 @@ AeBuildLocalTables (
* ACPICA core ignores it
*/
memset (&LocalTEST, 0, sizeof (ACPI_TABLE_HEADER));
ACPI_MOVE_NAME (LocalTEST.Signature, "TEST");
ACPI_COPY_NAMESEG (LocalTEST.Signature, "TEST");
LocalTEST.Revision = 1;
LocalTEST.Length = sizeof (ACPI_TABLE_HEADER);
@ -559,7 +559,7 @@ AeBuildLocalTables (
* sure that the ACPICA core ignores it
*/
memset (&LocalBADTABLE, 0, sizeof (ACPI_TABLE_HEADER));
ACPI_MOVE_NAME (LocalBADTABLE.Signature, "BAD!");
ACPI_COPY_NAMESEG (LocalBADTABLE.Signature, "BAD!");
LocalBADTABLE.Revision = 1;
LocalBADTABLE.Length = sizeof (ACPI_TABLE_HEADER);

View File

@ -168,6 +168,10 @@ static void
AeTestSleepData (
void);
static void
AeGlobalAddressRangeCheck(
void);
/******************************************************************************
*
@ -594,3 +598,59 @@ AeTestSleepData (
}
}
}
/******************************************************************************
*
* FUNCTION: AeLateTest
*
* DESCRIPTION: Exercise tests that should be performed before shutdown.
*
*****************************************************************************/
void
AeLateTest (
void)
{
AeGlobalAddressRangeCheck();
}
/******************************************************************************
*
* FUNCTION: AeGlobalAddressRangeCheck
*
* DESCRIPTION: There have been some issues in the past with adding and
* removing items to the global address list from
* OperationRegions declared in control methods. This test loops
* over the list to ensure that dangling pointers do not exist in
* the global address list.
*
*****************************************************************************/
static void
AeGlobalAddressRangeCheck(
void)
{
ACPI_STATUS Status;
ACPI_ADDRESS_RANGE *Current;
ACPI_BUFFER ReturnBuffer;
UINT32 i;
ReturnBuffer.Length = ACPI_ALLOCATE_BUFFER;
AcpiUtInitializeBuffer (&ReturnBuffer, ACPI_ALLOCATE_BUFFER);
for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++)
{
Current = AcpiGbl_AddressRangeList[i];
while (Current)
{
Status = AcpiGetName (Current->RegionNode, ACPI_SINGLE_NAME, &ReturnBuffer);
ACPI_CHECK_OK (AcpiGetname, Status);
Current = Current->Next;
}
}
}

View File

@ -297,7 +297,7 @@ AhFindPredefinedNames (
{
UINT32 Length;
BOOLEAN Found;
char Name[ACPI_NAME_SIZE + 1];
char Name[ACPI_NAMESEG_SIZE + 1];
if (!NamePrefix || (*NamePrefix == '*'))
@ -307,7 +307,7 @@ AhFindPredefinedNames (
}
Length = strlen (NamePrefix);
if (Length > ACPI_NAME_SIZE)
if (Length > ACPI_NAMESEG_SIZE)
{
printf ("%.8s: Predefined name must be 4 characters maximum\n",
NamePrefix);

View File

@ -206,13 +206,13 @@ AnInitializeTableHeader (
UINT32 Length)
{
ACPI_MOVE_NAME (Header->Signature, Signature);
ACPI_COPY_NAMESEG (Header->Signature, Signature);
Header->Length = Length;
Header->OemRevision = 0x1001;
memcpy (Header->OemId, "Intel ", ACPI_OEM_ID_SIZE);
memcpy (Header->OemTableId, "AcpiExec", ACPI_OEM_TABLE_ID_SIZE);
ACPI_MOVE_NAME (Header->AslCompilerId, "INTL");
ACPI_COPY_NAMESEG (Header->AslCompilerId, "INTL");
Header->AslCompilerRevision = ACPI_CA_VERSION;
/* Set the checksum, must set to zero first */
@ -257,8 +257,8 @@ AnBuildLocalTables (
NextTable = TableList;
while (NextTable)
{
if (!ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT) &&
!ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT))
if (!ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_DSDT) &&
!ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_FADT))
{
TableCount++;
}
@ -294,7 +294,7 @@ AnBuildLocalTables (
* Incoming DSDT or FADT are special cases. All other tables are
* just immediately installed into the XSDT.
*/
if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT))
if (ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_DSDT))
{
if (DsdtAddress)
{
@ -306,7 +306,7 @@ AnBuildLocalTables (
DsdtAddress = ACPI_PTR_TO_PHYSADDR (NextTable->Table);
}
else if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT))
else if (ACPI_COMPARE_NAMESEG (NextTable->Table->Signature, ACPI_SIG_FADT))
{
ExternalFadt =
ACPI_CAST_PTR (ACPI_TABLE_FADT, NextTable->Table);
@ -434,7 +434,7 @@ AnBuildLocalTables (
/* Build a FACS */
memset (&LocalFACS, 0, sizeof (ACPI_TABLE_FACS));
ACPI_MOVE_NAME (LocalFACS.Signature, ACPI_SIG_FACS);
ACPI_COPY_NAMESEG (LocalFACS.Signature, ACPI_SIG_FACS);
LocalFACS.Length = sizeof (ACPI_TABLE_FACS);
LocalFACS.GlobalLock = 0x11AA0011;

View File

@ -204,7 +204,7 @@ AxExtractTables (
if (Signature)
{
strncpy (UpperSignature, Signature, ACPI_NAME_SIZE);
strncpy (UpperSignature, Signature, ACPI_NAMESEG_SIZE);
AcpiUtStrupr (UpperSignature);
/* Are there enough instances of the table to continue? */
@ -262,12 +262,12 @@ AxExtractTables (
continue;
}
ACPI_MOVE_NAME (ThisSignature, Gbl_LineBuffer);
ACPI_COPY_NAMESEG (ThisSignature, Gbl_LineBuffer);
if (Signature)
{
/* Ignore signatures that don't match */
if (!ACPI_COMPARE_NAME (ThisSignature, UpperSignature))
if (!ACPI_COMPARE_NAMESEG (ThisSignature, UpperSignature))
{
continue;
}
@ -466,12 +466,12 @@ AxExtractToMultiAmlFile (
continue;
}
ACPI_MOVE_NAME (ThisSignature, Gbl_LineBuffer);
ACPI_COPY_NAMESEG (ThisSignature, Gbl_LineBuffer);
/* Only want DSDT and SSDTs */
if (!ACPI_COMPARE_NAME (ThisSignature, ACPI_SIG_DSDT) &&
!ACPI_COMPARE_NAME (ThisSignature, ACPI_SIG_SSDT))
if (!ACPI_COMPARE_NAMESEG (ThisSignature, ACPI_SIG_DSDT) &&
!ACPI_COMPARE_NAMESEG (ThisSignature, ACPI_SIG_SSDT))
{
continue;
}

View File

@ -530,7 +530,7 @@ AxCountTableInstances (
}
AxNormalizeSignature (Gbl_InstanceBuffer);
if (ACPI_COMPARE_NAME (Gbl_InstanceBuffer, Signature))
if (ACPI_COMPARE_NAMESEG (Gbl_InstanceBuffer, Signature))
{
Instances++;
}
@ -703,7 +703,7 @@ AxDumpTableHeader (
/* FACS has only signature and length */
if (ACPI_COMPARE_NAME (TableHeader->Signature, "FACS"))
if (ACPI_COMPARE_NAMESEG (TableHeader->Signature, "FACS"))
{
printf (" 0x%2.2X\n", Facs->Version);
return;
@ -745,7 +745,7 @@ AxCheckTableLengths (
}
if ((ByteCount < sizeof (ACPI_TABLE_HEADER)) &&
(ByteCount >= ACPI_NAME_SIZE))
(ByteCount >= ACPI_NAMESEG_SIZE))
{
printf (" : (Table too short for an ACPI table)");
}