4c4
< * $Revision: 93 $
---
> * $Revision: 94 $
185c185
< if ((ObjDesc->Method.Concurrency != INFINITE_CONCURRENCY) &&
---
> if ((ObjDesc->Method.Concurrency != ACPI_INFINITE_CONCURRENCY) &&
392,396c392
< /* 1) Parse: Create a new walk state for the preempting walk */
<
< NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId,
< Op, ObjDesc, NULL);
< if (!NextWalkState)
---
> if (!(ObjDesc->Method.MethodFlags & AML_METHOD_INTERNAL_ONLY))
398,399c394
< return_ACPI_STATUS (AE_NO_MEMORY);
< }
---
> /* 1) Parse: Create a new walk state for the preempting walk */
401c396,401
< /* Create and init a Root Node */
---
> NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId,
> Op, ObjDesc, NULL);
> if (!NextWalkState)
> {
> return_ACPI_STATUS (AE_NO_MEMORY);
> }
403,408d402
< Op = AcpiPsCreateScopeOp ();
< if (!Op)
< {
< Status = AE_NO_MEMORY;
< goto Cleanup;
< }
410,417c404
< Status = AcpiDsInitAmlWalk (NextWalkState, Op, MethodNode,
< ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength,
< NULL, NULL, 1);
< if (ACPI_FAILURE (Status))
< {
< AcpiDsDeleteWalkState (NextWalkState);
< goto Cleanup;
< }
---
> /* Create and init a Root Node */
419c406,411
< /* Begin AML parse */
---
> Op = AcpiPsCreateScopeOp ();
> if (!Op)
> {
> Status = AE_NO_MEMORY;
> goto Cleanup;
> }
421,422c413,420
< Status = AcpiPsParseAml (NextWalkState);
< AcpiPsDeleteParseTree (Op);
---
> Status = AcpiDsInitAmlWalk (NextWalkState, Op, MethodNode,
> ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength,
> NULL, NULL, 1);
> if (ACPI_FAILURE (Status))
> {
> AcpiDsDeleteWalkState (NextWalkState);
> goto Cleanup;
> }
423a422,427
> /* Begin AML parse */
>
> Status = AcpiPsParseAml (NextWalkState);
> AcpiPsDeleteParseTree (Op);
> }
>
433d436
<
466a470,475
> if (ObjDesc->Method.MethodFlags & AML_METHOD_INTERNAL_ONLY)
> {
> Status = ObjDesc->Method.Implementation (NextWalkState);
> return_ACPI_STATUS (Status);
> }
>
472a482,487
> if (NextWalkState->MethodDesc)
> {
> /* Decrement the thread count on the method parse tree */
>
> NextWalkState->MethodDesc->Method.ThreadCount--;
> }
476d490
<
607c621,626
< /* Decrement the thread count on the method parse tree */
---
> if (WalkState->MethodDesc->Method.ThreadCount)
> {
> ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
> "*** Not deleting method namespace, there are still %d threads\n",
> WalkState->MethodDesc->Method.ThreadCount));
> }
609d627
< WalkState->MethodDesc->Method.ThreadCount--;
612a631,648
> * Support to dynamically change a method from NotSerialized to
> * Serialized if it appears that the method is written foolishly and
> * does not support multiple thread execution. The best example of this
> * is if such a method creates namespace objects and blocks. A second
> * thread will fail with an AE_ALREADY_EXISTS exception
> *
> * This code is here because we must wait until the last thread exits
> * before creating the synchronization semaphore.
> */
> if ((WalkState->MethodDesc->Method.Concurrency == 1) &&
> (!WalkState->MethodDesc->Method.Semaphore))
> {
> Status = AcpiOsCreateSemaphore (1,
> 1,
> &WalkState->MethodDesc->Method.Semaphore);
> }
>
> /*
< * $Revision: 93 $
---
> * $Revision: 94 $
185c185
< if ((ObjDesc->Method.Concurrency != INFINITE_CONCURRENCY) &&
---
> if ((ObjDesc->Method.Concurrency != ACPI_INFINITE_CONCURRENCY) &&
392,396c392
< /* 1) Parse: Create a new walk state for the preempting walk */
<
< NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId,
< Op, ObjDesc, NULL);
< if (!NextWalkState)
---
> if (!(ObjDesc->Method.MethodFlags & AML_METHOD_INTERNAL_ONLY))
398,399c394
< return_ACPI_STATUS (AE_NO_MEMORY);
< }
---
> /* 1) Parse: Create a new walk state for the preempting walk */
401c396,401
< /* Create and init a Root Node */
---
> NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwningId,
> Op, ObjDesc, NULL);
> if (!NextWalkState)
> {
> return_ACPI_STATUS (AE_NO_MEMORY);
> }
403,408d402
< Op = AcpiPsCreateScopeOp ();
< if (!Op)
< {
< Status = AE_NO_MEMORY;
< goto Cleanup;
< }
410,417c404
< Status = AcpiDsInitAmlWalk (NextWalkState, Op, MethodNode,
< ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength,
< NULL, NULL, 1);
< if (ACPI_FAILURE (Status))
< {
< AcpiDsDeleteWalkState (NextWalkState);
< goto Cleanup;
< }
---
> /* Create and init a Root Node */
419c406,411
< /* Begin AML parse */
---
> Op = AcpiPsCreateScopeOp ();
> if (!Op)
> {
> Status = AE_NO_MEMORY;
> goto Cleanup;
> }
421,422c413,420
< Status = AcpiPsParseAml (NextWalkState);
< AcpiPsDeleteParseTree (Op);
---
> Status = AcpiDsInitAmlWalk (NextWalkState, Op, MethodNode,
> ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength,
> NULL, NULL, 1);
> if (ACPI_FAILURE (Status))
> {
> AcpiDsDeleteWalkState (NextWalkState);
> goto Cleanup;
> }
423a422,427
> /* Begin AML parse */
>
> Status = AcpiPsParseAml (NextWalkState);
> AcpiPsDeleteParseTree (Op);
> }
>
433d436
<
466a470,475
> if (ObjDesc->Method.MethodFlags & AML_METHOD_INTERNAL_ONLY)
> {
> Status = ObjDesc->Method.Implementation (NextWalkState);
> return_ACPI_STATUS (Status);
> }
>
472a482,487
> if (NextWalkState->MethodDesc)
> {
> /* Decrement the thread count on the method parse tree */
>
> NextWalkState->MethodDesc->Method.ThreadCount--;
> }
476d490
<
607c621,626
< /* Decrement the thread count on the method parse tree */
---
> if (WalkState->MethodDesc->Method.ThreadCount)
> {
> ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
> "*** Not deleting method namespace, there are still %d threads\n",
> WalkState->MethodDesc->Method.ThreadCount));
> }
609d627
< WalkState->MethodDesc->Method.ThreadCount--;
612a631,648
> * Support to dynamically change a method from NotSerialized to
> * Serialized if it appears that the method is written foolishly and
> * does not support multiple thread execution. The best example of this
> * is if such a method creates namespace objects and blocks. A second
> * thread will fail with an AE_ALREADY_EXISTS exception
> *
> * This code is here because we must wait until the last thread exits
> * before creating the synchronization semaphore.
> */
> if ((WalkState->MethodDesc->Method.Concurrency == 1) &&
> (!WalkState->MethodDesc->Method.Semaphore))
> {
> Status = AcpiOsCreateSemaphore (1,
> 1,
> &WalkState->MethodDesc->Method.Semaphore);
> }
>
> /*