iASL: Additional changes for external methods.

Fixes issues with the methods that are permanently defined
in the namespace (such as _OSI, etc.) ACPICA BZ 740 Lin Ming.
This commit is contained in:
Robert Moore 2008-10-29 13:34:15 -07:00
parent c2794d1983
commit 68f8e613f1
2 changed files with 18 additions and 9 deletions

View File

@ -426,6 +426,13 @@ AdAmlDisassemble (
AcpiFormatException (Status));
return Status;
}
/*
* Load namespace from names created within control methods
* Set owner id of nodes in external table
*/
AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot,
AcpiGbl_RootNode, OwnerId);
AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot);
}
@ -1213,17 +1220,17 @@ AdParseTable (
return Status;
}
Status = AcpiTbAllocateOwnerId (TableIndex);
if (ACPI_FAILURE (Status))
if (ACPI_FAILURE (Status))
{
return Status;
return Status;
}
if (OwnerId)
{
Status = AcpiTbGetOwnerId (TableIndex, OwnerId);
if (ACPI_FAILURE (Status))
{
return Status;
}
{
return Status;
}
}
}

View File

@ -826,9 +826,11 @@ AcpiDmXrefDescendingOp (
}
}
/* Found the node in external table, add it to external list */
else if (WalkState->OwnerId != Node->OwnerId)
/*
* Found the node in external table, add it to external list
* Node->OwnerId == 0 indicates built-in ACPI Names, _OS_ etc
*/
else if (Node->OwnerId && WalkState->OwnerId != Node->OwnerId)
{
Object = AcpiNsGetAttachedObject (Node);
if (Object)
@ -853,7 +855,7 @@ AcpiDmXrefDescendingOp (
AcpiDmAddToExternalList (Path, (UINT8) ObjectType, 0);
}
/*
/*
* Set it NULL since the node is found in external table
* And prevent it from opening new scope at below code
*/