Check in files off the vendor branch as well as files with local patches.

This commit is contained in:
Nate Lawson 2004-03-18 17:46:27 +00:00
parent 55545f899c
commit fce89338bf
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=127178
4 changed files with 75 additions and 23 deletions

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acconfig.h - Global configuration constants
* $Revision: 149 $
* $Revision: 150 $
*
*****************************************************************************/
@ -137,7 +137,7 @@
/* Version string */
#define ACPI_CA_VERSION 0x20040220
#define ACPI_CA_VERSION 0x20040311
/* Maximum objects in the various object caches */
@ -258,6 +258,10 @@
#define ACPI_SMBUS_BUFFER_SIZE 34
/* Number of strings associated with the _OSI reserved method */
#define ACPI_NUM_OSI_STRINGS 4
/******************************************************************************
*

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
* $Revision: 159 $
* $Revision: 160 $
*
*****************************************************************************/
@ -125,7 +125,6 @@ ACPI_STATUS (*ACPI_PKG_CALLBACK) (
ACPI_GENERIC_STATE *State,
void *Context);
ACPI_STATUS
AcpiUtWalkPackageTree (
ACPI_OPERAND_OBJECT *SourceObject,
@ -133,7 +132,6 @@ AcpiUtWalkPackageTree (
ACPI_PKG_CALLBACK WalkCallback,
void *Context);
typedef struct acpi_pkg_info
{
UINT8 *FreeSpace;
@ -549,6 +547,10 @@ AcpiUtDeleteInternalObjectList (
#define METHOD_NAME__PRS "_PRS"
ACPI_STATUS
AcpiUtOsiImplementation (
ACPI_WALK_STATE *WalkState);
ACPI_STATUS
AcpiUtEvaluateObject (
ACPI_NAMESPACE_NODE *PrefixNode,

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: psparse - Parser top level AML parse routines
* $Revision: 143 $
* $Revision: 144 $
*
*****************************************************************************/
@ -522,7 +522,7 @@ AcpiPsParseLoop (
ACPI_STATUS Status = AE_OK;
ACPI_PARSE_OBJECT *Op = NULL; /* current op */
ACPI_PARSE_OBJECT *Arg = NULL;
ACPI_PARSE_OBJECT PreOp;
ACPI_PARSE_OBJECT *PreOp = NULL;
ACPI_PARSE_STATE *ParserState;
UINT8 *AmlOpStart = NULL;
@ -654,8 +654,19 @@ AcpiPsParseLoop (
if (WalkState->OpInfo->Flags & AML_NAMED)
{
PreOp.Common.Value.Arg = NULL;
PreOp.Common.AmlOpcode = WalkState->Opcode;
/* Allocate a new PreOp if necessary */
if (!PreOp)
{
PreOp = AcpiPsAllocOp (WalkState->Opcode);
if (!PreOp)
{
return_ACPI_STATUS (AE_NO_MEMORY);
}
}
PreOp->Common.Value.Arg = NULL;
PreOp->Common.AmlOpcode = WalkState->Opcode;
/*
* Get and append arguments until we find the node that contains
@ -671,7 +682,7 @@ AcpiPsParseLoop (
goto CloseThisOp;
}
AcpiPsAppendArg (&PreOp, Arg);
AcpiPsAppendArg (PreOp, Arg);
INCREMENT_ARG_LIST (WalkState->ArgTypes);
}
@ -717,7 +728,7 @@ AcpiPsParseLoop (
goto CloseThisOp;
}
AcpiPsAppendArg (Op, PreOp.Common.Value.Arg);
AcpiPsAppendArg (Op, PreOp->Common.Value.Arg);
AcpiGbl_Depth++;
if (Op->Common.AmlOpcode == AML_REGION_OP)
@ -993,6 +1004,11 @@ AcpiPsParseLoop (
AcpiPsCompleteThisOp (WalkState, Op);
Op = NULL;
if (PreOp)
{
AcpiPsFreeOp (PreOp);
PreOp = NULL;
}
switch (Status)
{
@ -1285,6 +1301,30 @@ AcpiPsParseAml (
{
ACPI_REPORT_METHOD_ERROR ("Method execution failed",
WalkState->MethodNode, NULL, Status);
/* Check for possible multi-thread reentrancy problem */
if ((Status == AE_ALREADY_EXISTS) &&
(!WalkState->MethodDesc->Method.Semaphore))
{
/*
* This method is marked NotSerialized, but it tried to create a named
* object, causing the second thread entrance to fail. We will workaround
* this by marking the method permanently as Serialized.
*/
WalkState->MethodDesc->Method.MethodFlags |= AML_METHOD_SERIALIZED;
WalkState->MethodDesc->Method.Concurrency = 1;
}
}
if (WalkState->MethodDesc)
{
/* Decrement the thread count on the method parse tree */
if (WalkState->MethodDesc->Method.ThreadCount)
{
WalkState->MethodDesc->Method.ThreadCount--;
}
}
/* We are done with this walk, move on to the parent if any */

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utglobal - Global variables for the ACPI subsystem
* $Revision: 193 $
* $Revision: 194 $
*
*****************************************************************************/
@ -265,6 +265,15 @@ const char *AcpiGbl_HighestDstateNames[4] = {
"_S3D",
"_S4D"};
/* Strings supported by the _OSI predefined (internal) method */
const char *AcpiGbl_ValidOsiStrings[ACPI_NUM_OSI_STRINGS] = {
"Linux",
"Windows 2000",
"Windows 2001",
"Windows 2001.1"};
/******************************************************************************
*
* Namespace globals
@ -275,14 +284,10 @@ const char *AcpiGbl_HighestDstateNames[4] = {
/*
* Predefined ACPI Names (Built-in to the Interpreter)
*
* Initial values are currently supported only for types String and Number.
* Both are specified as strings in this table.
*
* NOTES:
* 1) _SB_ is defined to be a device to allow _SB_/_INI to be run
* 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
* during the initialization sequence.
*/
const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
{
{"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL},
@ -294,7 +299,7 @@ const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
{"_GL_", ACPI_TYPE_MUTEX, "0"},
#if defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
{"_OSI", ACPI_TYPE_METHOD, "1"},
#endif
{NULL, ACPI_TYPE_ANY, NULL} /* Table terminator */
@ -305,7 +310,6 @@ const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
* Properties of the ACPI Object Types, both internal and external.
* The table is indexed by values of ACPI_OBJECT_TYPE
*/
const UINT8 AcpiGbl_NsProperties[] =
{
ACPI_NS_NORMAL, /* 00 Any */
@ -384,10 +388,8 @@ AcpiUtHexToAsciiChar (
*
******************************************************************************/
ACPI_TABLE_LIST AcpiGbl_TableLists[NUM_ACPI_TABLE_TYPES];
ACPI_TABLE_SUPPORT AcpiGbl_TableData[NUM_ACPI_TABLE_TYPES] =
{
/*********** Name, Signature, Global typed pointer Signature size, Type How many allowed?, Contains valid AML? */
@ -551,9 +553,8 @@ AcpiUtGetEventName (
*
* The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; when
* stored in a table it really means that we have thus far seen no evidence to
* indicatewhat type is actually going to be stored for this entry.
* indicate what type is actually going to be stored for this entry.
*/
static const char AcpiGbl_BadType[] = "UNDEFINED";
#define TYPE_NAME_LENGTH 12 /* Maximum length of each string */
@ -858,6 +859,11 @@ AcpiUtInitGlobals (
ACPI_FUNCTION_TRACE ("UtInitGlobals");
/* Runtime configuration */
AcpiGbl_CreateOsiMethod = TRUE;
AcpiGbl_AllMethodsSerialized = FALSE;
/* Memory allocation and cache lists */
ACPI_MEMSET (AcpiGbl_MemoryLists, 0, sizeof (ACPI_MEMORY_LIST) * ACPI_NUM_MEM_LISTS);