diff options
Diffstat (limited to 'dispatcher')
| -rw-r--r-- | dispatcher/dsinit.c | 16 | ||||
| -rw-r--r-- | dispatcher/dsmethod.c | 15 | ||||
| -rw-r--r-- | dispatcher/dsmthdat.c | 16 | ||||
| -rw-r--r-- | dispatcher/dsopcode.c | 6 | ||||
| -rw-r--r-- | dispatcher/dsutils.c | 4 |
5 files changed, 33 insertions, 24 deletions
diff --git a/dispatcher/dsinit.c b/dispatcher/dsinit.c index 4525a0bc4fe4f..a75bf91dda3a0 100644 --- a/dispatcher/dsinit.c +++ b/dispatcher/dsinit.c @@ -263,12 +263,12 @@ AcpiDsInitializeObjects ( "**** Starting initialization of namespace objects ****\n")); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "Parsing all Control Methods:")); - Info.MethodCount = 0; - Info.OpRegionCount = 0; - Info.ObjectCount = 0; - Info.DeviceCount = 0; - Info.TableIndex = TableIndex; - Info.OwnerId = OwnerId; + /* Set all init info to zero */ + + ACPI_MEMSET (&Info, 0, sizeof (ACPI_INIT_WALK_INFO)); + + Info.OwnerId = OwnerId; + Info.TableIndex = TableIndex; /* Walk entire namespace from the supplied root */ @@ -297,12 +297,12 @@ AcpiDsInitializeObjects ( } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - "\nTable [%4.4s](id %4.4X) - %hd Objects with %hd Devices %hd Methods %hd Regions\n", + "\nTable [%4.4s](id %4.4X) - %u Objects with %u Devices %u Methods %u Regions\n", Table->Signature, OwnerId, Info.ObjectCount, Info.DeviceCount, Info.MethodCount, Info.OpRegionCount)); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "%hd Methods, %hd Regions\n", Info.MethodCount, Info.OpRegionCount)); + "%u Methods, %u Regions\n", Info.MethodCount, Info.OpRegionCount)); return_ACPI_STATUS (AE_OK); } diff --git a/dispatcher/dsmethod.c b/dispatcher/dsmethod.c index 969c9ca23e396..37d5f206e6ddf 100644 --- a/dispatcher/dsmethod.c +++ b/dispatcher/dsmethod.c @@ -700,7 +700,18 @@ AcpiDsTerminateControlMethod ( */ if (!(MethodDesc->Method.Flags & AOPOBJ_MODULE_LEVEL)) { - AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId); + /* Delete any direct children of (created by) this method */ + + AcpiNsDeleteNamespaceSubtree (WalkState->MethodNode); + + /* + * Delete any objects that were created by this method + * elsewhere in the namespace (if any were created). + */ + if (MethodDesc->Method.Flags & AOPOBJ_MODIFIED_NAMESPACE) + { + AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId); + } } } @@ -725,7 +736,7 @@ AcpiDsTerminateControlMethod ( * we immediately reuse it for the next thread executing this method */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, - "*** Completed execution of one thread, %d threads remaining\n", + "*** Completed execution of one thread, %u threads remaining\n", MethodDesc->Method.ThreadCount)); } else diff --git a/dispatcher/dsmthdat.c b/dispatcher/dsmthdat.c index 54678921bc1b7..3d17763cf13ee 100644 --- a/dispatcher/dsmthdat.c +++ b/dispatcher/dsmthdat.c @@ -188,8 +188,7 @@ AcpiDsMethodDataInit ( WalkState->Arguments[i].Name.Integer |= (i << 24); WalkState->Arguments[i].DescriptorType = ACPI_DESC_TYPE_NAMED; WalkState->Arguments[i].Type = ACPI_TYPE_ANY; - WalkState->Arguments[i].Flags = - ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_ARG; + WalkState->Arguments[i].Flags = ANOBJ_METHOD_ARG; } /* Init the method locals */ @@ -201,8 +200,7 @@ AcpiDsMethodDataInit ( WalkState->LocalVariables[i].Name.Integer |= (i << 24); WalkState->LocalVariables[i].DescriptorType = ACPI_DESC_TYPE_NAMED; WalkState->LocalVariables[i].Type = ACPI_TYPE_ANY; - WalkState->LocalVariables[i].Flags = - ANOBJ_END_OF_PEER_LIST | ANOBJ_METHOD_LOCAL; + WalkState->LocalVariables[i].Flags = ANOBJ_METHOD_LOCAL; } return_VOID; @@ -238,7 +236,7 @@ AcpiDsMethodDataDeleteAll ( { if (WalkState->LocalVariables[Index].Object) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Local%d=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Local%u=%p\n", Index, WalkState->LocalVariables[Index].Object)); /* Detach object (if present) and remove a reference */ @@ -253,7 +251,7 @@ AcpiDsMethodDataDeleteAll ( { if (WalkState->Arguments[Index].Object) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Arg%d=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Arg%u=%p\n", Index, WalkState->Arguments[Index].Object)); /* Detach object (if present) and remove a reference */ @@ -322,7 +320,7 @@ AcpiDsMethodDataInitArgs ( Index++; } - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%d args passed to method\n", Index)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%u args passed to method\n", Index)); return_ACPI_STATUS (AE_OK); } @@ -429,7 +427,7 @@ AcpiDsMethodDataSetValue ( ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "NewObj %p Type %2.2X, Refs=%d [%s]\n", Object, + "NewObj %p Type %2.2X, Refs=%u [%s]\n", Object, Type, Object->Common.ReferenceCount, AcpiUtGetTypeName (Object->Common.Type))); @@ -667,7 +665,7 @@ AcpiDsStoreObjectToLocal ( ACPI_FUNCTION_TRACE (DsStoreObjectToLocal); - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Type=%2.2X Index=%d Obj=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Type=%2.2X Index=%u Obj=%p\n", Type, Index, ObjDesc)); /* Parameter validation */ diff --git a/dispatcher/dsopcode.c b/dispatcher/dsopcode.c index e7ebc765301a0..9d0941d8d502e 100644 --- a/dispatcher/dsopcode.c +++ b/dispatcher/dsopcode.c @@ -307,7 +307,7 @@ AcpiDsGetBufferFieldArguments ( /* Execute the AML code for the TermArg arguments */ - Status = AcpiDsExecuteArguments (Node, AcpiNsGetParentNode (Node), + Status = AcpiDsExecuteArguments (Node, Node->Parent, ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } @@ -354,7 +354,7 @@ AcpiDsGetBankFieldArguments ( /* Execute the AML code for the TermArg arguments */ - Status = AcpiDsExecuteArguments (Node, AcpiNsGetParentNode (Node), + Status = AcpiDsExecuteArguments (Node, Node->Parent, ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } @@ -505,7 +505,7 @@ AcpiDsGetRegionArguments ( /* Execute the argument AML */ - Status = AcpiDsExecuteArguments (Node, AcpiNsGetParentNode (Node), + Status = AcpiDsExecuteArguments (Node, Node->Parent, ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } diff --git a/dispatcher/dsutils.c b/dispatcher/dsutils.c index 8eb8b3dbbd6ff..7eb06372660fb 100644 --- a/dispatcher/dsutils.c +++ b/dispatcher/dsutils.c @@ -875,7 +875,7 @@ AcpiDsCreateOperands ( Index--; - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Arg #%d (%p) done, Arg1=%p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Arg #%u (%p) done, Arg1=%p\n", Index, Arg, FirstArg)); } @@ -890,7 +890,7 @@ Cleanup: */ AcpiDsObjStackPopAndDelete (ArgCount, WalkState); - ACPI_EXCEPTION ((AE_INFO, Status, "While creating Arg %d", Index)); + ACPI_EXCEPTION ((AE_INFO, Status, "While creating Arg %u", Index)); return_ACPI_STATUS (Status); } |
