summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/nsutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/nsutils.c')
-rw-r--r--sys/contrib/dev/acpica/nsutils.c157
1 files changed, 119 insertions, 38 deletions
diff --git a/sys/contrib/dev/acpica/nsutils.c b/sys/contrib/dev/acpica/nsutils.c
index 69ed423..321cb30 100644
--- a/sys/contrib/dev/acpica/nsutils.c
+++ b/sys/contrib/dev/acpica/nsutils.c
@@ -2,7 +2,7 @@
*
* Module Name: nsutils - Utilities for accessing ACPI namespace, accessing
* parents and siblings and Scope manipulation
- * $Revision: 116 $
+ * $Revision: 122 $
*
*****************************************************************************/
@@ -10,7 +10,7 @@
*
* 1. Copyright Notice
*
- * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
* All rights reserved.
*
* 2. License
@@ -143,7 +143,7 @@
void
AcpiNsReportError (
- NATIVE_CHAR *ModuleName,
+ char *ModuleName,
UINT32 LineNumber,
UINT32 ComponentId,
char *InternalName,
@@ -152,12 +152,12 @@ AcpiNsReportError (
ACPI_STATUS Status;
char *Name;
-
+
/* Convert path to external format */
Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, InternalName, NULL, &Name);
- AcpiOsPrintf ("%8s-%04d: *** Error: Looking up ",
+ AcpiOsPrintf ("%8s-%04d: *** Error: Looking up ",
ModuleName, LineNumber);
/* Print target name */
@@ -171,7 +171,7 @@ AcpiNsReportError (
AcpiOsPrintf ("[COULD NOT EXTERNALIZE NAME]");
}
- AcpiOsPrintf (" in namespace, %s\n",
+ AcpiOsPrintf (" in namespace, %s\n",
AcpiFormatException (LookupStatus));
if (Name)
@@ -183,6 +183,85 @@ AcpiNsReportError (
/*******************************************************************************
*
+ * FUNCTION: AcpiNsReportMethodError
+ *
+ * PARAMETERS: ModuleName - Caller's module name (for error output)
+ * LineNumber - Caller's line number (for error output)
+ * ComponentId - Caller's component ID (for error output)
+ * Message - Error message to use on failure
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Print warning message with full pathname
+ *
+ ******************************************************************************/
+
+void
+AcpiNsReportMethodError (
+ char *ModuleName,
+ UINT32 LineNumber,
+ UINT32 ComponentId,
+ char *Message,
+ ACPI_NAMESPACE_NODE *PrefixNode,
+ char *Path,
+ ACPI_STATUS MethodStatus)
+{
+ ACPI_STATUS Status;
+ ACPI_NAMESPACE_NODE *Node = PrefixNode;
+
+
+ if (Path)
+ {
+ Status = AcpiNsGetNodeByPath (Path, PrefixNode, ACPI_NS_NO_UPSEARCH, &Node);
+ if (ACPI_FAILURE (Status))
+ {
+ AcpiOsPrintf ("ReportMethodError: Could not get node\n");
+ return;
+ }
+ }
+
+ AcpiOsPrintf ("%8s-%04d: *** Error: ", ModuleName, LineNumber);
+ AcpiNsPrintNodePathname (Node, Message);
+ AcpiOsPrintf (", %s\n", AcpiFormatException (MethodStatus));
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiNsPrintNodePathname
+ *
+ * PARAMETERS: Node - Object
+ * Msg - Prefix message
+ *
+ * DESCRIPTION: Print an object's full namespace pathname
+ * Manages allocation/freeing of a pathname buffer
+ *
+ ******************************************************************************/
+
+void
+AcpiNsPrintNodePathname (
+ ACPI_NAMESPACE_NODE *Node,
+ char *Msg)
+{
+ ACPI_BUFFER Buffer;
+ ACPI_STATUS Status;
+
+
+ /* Convert handle to a full pathname and print it (with supplied message) */
+
+ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
+
+ Status = AcpiNsHandleToPathname (Node, &Buffer);
+ if (ACPI_SUCCESS (Status))
+ {
+ AcpiOsPrintf ("%s [%s] (Node %p)", Msg, (char *) Buffer.Pointer, Node);
+ ACPI_MEM_FREE (Buffer.Pointer);
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiNsValidRootPrefix
*
* PARAMETERS: Prefix - Character to be checked
@@ -195,7 +274,7 @@ AcpiNsReportError (
BOOLEAN
AcpiNsValidRootPrefix (
- NATIVE_CHAR Prefix)
+ char Prefix)
{
return ((BOOLEAN) (Prefix == '\\'));
@@ -216,7 +295,7 @@ AcpiNsValidRootPrefix (
BOOLEAN
AcpiNsValidPathSeparator (
- NATIVE_CHAR Sep)
+ char Sep)
{
return ((BOOLEAN) (Sep == '.'));
@@ -298,7 +377,7 @@ void
AcpiNsGetInternalNameLength (
ACPI_NAMESTRING_INFO *Info)
{
- NATIVE_CHAR *NextExternalChar;
+ char *NextExternalChar;
UINT32 i;
@@ -379,10 +458,10 @@ AcpiNsBuildInternalName (
ACPI_NAMESTRING_INFO *Info)
{
UINT32 NumSegments = Info->NumSegments;
- NATIVE_CHAR *InternalName = Info->InternalName;
- NATIVE_CHAR *ExternalName = Info->NextExternalChar;
- NATIVE_CHAR *Result = NULL;
- NATIVE_UINT i;
+ char *InternalName = Info->InternalName;
+ char *ExternalName = Info->NextExternalChar;
+ char *Result = NULL;
+ ACPI_NATIVE_UINT i;
ACPI_FUNCTION_TRACE ("NsBuildInternalName");
@@ -432,13 +511,13 @@ AcpiNsBuildInternalName (
else if (NumSegments == 2)
{
InternalName[i] = AML_DUAL_NAME_PREFIX;
- Result = &InternalName[i+1];
+ Result = &InternalName[(ACPI_NATIVE_UINT) (i+1)];
}
else
{
InternalName[i] = AML_MULTI_NAME_PREFIX_OP;
- InternalName[i+1] = (char) NumSegments;
- Result = &InternalName[i+2];
+ InternalName[(ACPI_NATIVE_UINT) (i+1)] = (char) NumSegments;
+ Result = &InternalName[(ACPI_NATIVE_UINT) (i+2)];
}
}
@@ -514,10 +593,10 @@ AcpiNsBuildInternalName (
ACPI_STATUS
AcpiNsInternalizeName (
- NATIVE_CHAR *ExternalName,
- NATIVE_CHAR **ConvertedName)
+ char *ExternalName,
+ char **ConvertedName)
{
- NATIVE_CHAR *InternalName;
+ char *InternalName;
ACPI_NAMESTRING_INFO Info;
ACPI_STATUS Status;
@@ -582,12 +661,12 @@ AcpiNsExternalizeName (
UINT32 *ConvertedNameLength,
char **ConvertedName)
{
- NATIVE_UINT_MIN32 PrefixLength = 0;
- NATIVE_UINT_MIN32 NamesIndex = 0;
- NATIVE_UINT_MIN32 NumSegments = 0;
- NATIVE_UINT_MIN32 i = 0;
- NATIVE_UINT_MIN32 j = 0;
- NATIVE_UINT_MIN32 RequiredLength;
+ ACPI_NATIVE_UINT NamesIndex = 0;
+ ACPI_NATIVE_UINT NumSegments = 0;
+ ACPI_NATIVE_UINT RequiredLength;
+ ACPI_NATIVE_UINT PrefixLength = 0;
+ ACPI_NATIVE_UINT i = 0;
+ ACPI_NATIVE_UINT j = 0;
ACPI_FUNCTION_TRACE ("NsExternalizeName");
@@ -646,7 +725,7 @@ AcpiNsExternalizeName (
/* <count> 4-byte names */
NamesIndex = PrefixLength + 2;
- NumSegments = (UINT32) (UINT8) InternalName[PrefixLength + 1];
+ NumSegments = (UINT32) (UINT8) InternalName[(ACPI_NATIVE_UINT) (PrefixLength + 1)];
break;
case AML_DUAL_NAME_PREFIX:
@@ -932,30 +1011,28 @@ AcpiNsOpensScope (
ACPI_STATUS
AcpiNsGetNodeByPath (
- NATIVE_CHAR *Pathname,
+ char *Pathname,
ACPI_NAMESPACE_NODE *StartNode,
UINT32 Flags,
ACPI_NAMESPACE_NODE **ReturnNode)
{
ACPI_GENERIC_STATE ScopeInfo;
ACPI_STATUS Status;
- NATIVE_CHAR *InternalPath = NULL;
+ char *InternalPath = NULL;
ACPI_FUNCTION_TRACE_PTR ("NsGetNodeByPath", Pathname);
- if (!Pathname)
+ if (Pathname)
{
- return_ACPI_STATUS (AE_BAD_PARAMETER);
- }
+ /* Convert path to internal representation */
- /* Convert path to internal representation */
-
- Status = AcpiNsInternalizeName (Pathname, &InternalPath);
- if (ACPI_FAILURE (Status))
- {
- return_ACPI_STATUS (Status);
+ Status = AcpiNsInternalizeName (Pathname, &InternalPath);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
}
/* Must lock namespace during lookup */
@@ -985,7 +1062,11 @@ AcpiNsGetNodeByPath (
/* Cleanup */
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
- ACPI_MEM_FREE (InternalPath);
+
+ if (InternalPath)
+ {
+ ACPI_MEM_FREE (InternalPath);
+ }
return_ACPI_STATUS (Status);
}
OpenPOWER on IntegriCloud