mirror of
https://github.com/acpica/acpica/
synced 2025-01-18 07:29:20 +03:00
Support for method owner IDs
date 2000.04.21.22.17.00; author rmoore1; state Exp;
This commit is contained in:
parent
f6a0ffc35e
commit
6ca38ef7ac
@ -490,7 +490,7 @@ PsWalkParsedAml (
|
||||
NAME_TABLE_ENTRY *StartScope,
|
||||
ACPI_OBJECT_INTERNAL **Params,
|
||||
ACPI_OBJECT_INTERNAL **CallerReturnDesc,
|
||||
ACPI_TABLE_DESC *TableDesc,
|
||||
ACPI_OWNER_ID OwnerId,
|
||||
INTERPRETER_CALLBACK DescendingCallback,
|
||||
INTERPRETER_CALLBACK AscendingCallback)
|
||||
{
|
||||
@ -522,7 +522,9 @@ PsWalkParsedAml (
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
WalkState->TableDesc = TableDesc;
|
||||
/* TBD: move to createWalkSTate */
|
||||
|
||||
WalkState->OwnerId = OwnerId;
|
||||
|
||||
/* TBD:
|
||||
* TEMP until we pass WalkState to the interpreter
|
||||
@ -596,7 +598,7 @@ PsWalkParsedAml (
|
||||
|
||||
/* Delete all arguments and locals */
|
||||
|
||||
DsMethodDataDeleteArgs (WalkState);
|
||||
DsMethodDataDeleteAll (WalkState);
|
||||
|
||||
/* Delete the parse tree if asked to */
|
||||
|
||||
|
@ -131,84 +131,6 @@
|
||||
char *Gbl_ParserId = "Non-recursive AML Parser";
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* FUNCTION: PsxLoadTable
|
||||
*
|
||||
* PARAMETERS: *PcodeAddr - Address of pcode block
|
||||
* PcodeLength - Length of pcode block
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Mainline of the AML load/dump subsystem. Sets up the
|
||||
* input engine, calls handler for outermost object type.
|
||||
*
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
PsxLoadTable (
|
||||
UINT8 *PcodeAddr,
|
||||
INT32 PcodeLength)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
FUNCTION_TRACE ("PsxLoadTable");
|
||||
|
||||
|
||||
/* TBD By using the NAMESPACE mutex, this is now a namespace interface, move it */
|
||||
|
||||
if (!PcodeAddr)
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR, ("PsxLoadTable: Null AML pointer\n"));
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO, ("PsxLoadTable: AML block at %p\n", PcodeAddr));
|
||||
|
||||
|
||||
if (!PcodeLength)
|
||||
{
|
||||
DEBUG_PRINT (ACPI_ERROR, ("PsxLoadTable: Zero-length AML block\n"));
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Parse the table and load the namespace with all named objects found within.
|
||||
* Control methods are NOT parsed at this time. In fact, the control methods
|
||||
* cannot be parsed until the entire namespace is loaded, because if a control
|
||||
* method makes a forward reference (call) to another control method, we can't
|
||||
* continue parsing because we don't know how many arguments to parse next!
|
||||
*/
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO, ("PsxLoadTable: **** Begin Namespace Load ****\n"));
|
||||
BREAKPOINT3;
|
||||
|
||||
CmAcquireMutex (MTX_NAMESPACE);
|
||||
Status = PsParseTable (PcodeAddr, PcodeLength, DsLoad2BeginOp, DsLoad2EndOp, NULL);
|
||||
CmReleaseMutex (MTX_NAMESPACE);
|
||||
|
||||
|
||||
|
||||
/* TBD: Check if we should parse all methods here, or parse late */
|
||||
/*
|
||||
if (Gbl_MethodParsing = PARSE_EARLY)
|
||||
{
|
||||
*/
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO, ("PsxLoadTable: **** Begin Object Initialization ****\n"));
|
||||
BREAKPOINT3;
|
||||
|
||||
Status = DsInitializeObjects ();
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO, ("PsxLoadTable: **** Completed Object Initialization ****\n"));
|
||||
BREAKPOINT3;
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
@ -266,7 +188,7 @@ BREAKPOINT3;
|
||||
}
|
||||
|
||||
|
||||
DEBUG_PRINT (ACPI_INFO, ("PsxExecute: **** Begin Execution **** obj=%p code=%p len=%X\n",
|
||||
DEBUG_PRINT (ACPI_INFO, ("PsxExecute: **** Begin Method Execution **** obj=%p code=%p len=%X\n",
|
||||
ObjDesc, Pcode, PcodeLength));
|
||||
|
||||
|
||||
@ -280,6 +202,8 @@ BREAKPOINT3;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* If there is a concurrency limit on this method, we need to obtain a unit
|
||||
* from the method semaphore. This releases the interpreter if we block
|
||||
@ -298,7 +222,7 @@ BREAKPOINT3;
|
||||
/* This is where we really execute the method */
|
||||
|
||||
Status = PsWalkParsedAml (ObjDesc->Method.ParserOp, ObjDesc->Method.ParserOp, ObjDesc, MethodEntry->Scope, Params,
|
||||
ReturnObjDesc, DsExecBeginOp, DsExecEndOp);
|
||||
ReturnObjDesc, ObjDesc->Method.OwningId, DsExecBeginOp, DsExecEndOp);
|
||||
|
||||
/* Signal completion of the execution of this method if necessary */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user