summaryrefslogtreecommitdiff
path: root/source/components/executer/exdebug.c
diff options
context:
space:
mode:
authorLv Zheng <lv.zheng@intel.com>2014-03-28 10:39:02 +0800
committerLv Zheng <lv.zheng@intel.com>2015-06-10 16:07:56 +0800
commite8e4a9b19d0b72a7b165398bdc961fc2f6f502ec (patch)
tree6ef415ce99205186b3b7445d246566900f17d865 /source/components/executer/exdebug.c
parent07fffd02607685b655ed92ee15c160e6a810b60b (diff)
downloadacpica-e8e4a9b19d0b72a7b165398bdc961fc2f6f502ec.tar.gz
Executer: Add OSL trace hook support.
This patch adds OSL trace hook support. OSPMs are encouraged to use AcpiOsTracePoint() with ACPI_USE_SYSTEM_TRACER defined to implement platform specific trace facility. Lv Zheng. Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Diffstat (limited to 'source/components/executer/exdebug.c')
-rw-r--r--source/components/executer/exdebug.c136
1 files changed, 100 insertions, 36 deletions
diff --git a/source/components/executer/exdebug.c b/source/components/executer/exdebug.c
index dde909ad4..82c83b5cc 100644
--- a/source/components/executer/exdebug.c
+++ b/source/components/executer/exdebug.c
@@ -126,6 +126,14 @@
static ACPI_OPERAND_OBJECT *AcpiGbl_TraceMethodObject = NULL;
+/* Local prototypes */
+
+#ifdef ACPI_DEBUG_OUTPUT
+static const char *
+AcpiExGetTraceEventName (
+ ACPI_TRACE_EVENT_TYPE Type);
+#endif
+
#ifndef ACPI_NO_ERROR_MESSAGES
/*******************************************************************************
@@ -451,6 +459,90 @@ AcpiExInterpreterTraceEnabled (
/*******************************************************************************
*
+ * FUNCTION: AcpiExGetTraceEventName
+ *
+ * PARAMETERS: Type - Trace event type
+ *
+ * RETURN: Trace event name.
+ *
+ * DESCRIPTION: Used to obtain the full trace event name.
+ *
+ ******************************************************************************/
+
+#ifdef ACPI_DEBUG_OUTPUT
+
+static const char *
+AcpiExGetTraceEventName (
+ ACPI_TRACE_EVENT_TYPE Type)
+{
+ switch (Type)
+ {
+ case ACPI_TRACE_AML_METHOD:
+
+ return "Method";
+
+ case ACPI_TRACE_AML_OPCODE:
+
+ return "Opcode";
+
+ case ACPI_TRACE_AML_REGION:
+
+ return "Region";
+
+ default:
+
+ return "";
+ }
+}
+
+#endif
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiExTracePoint
+ *
+ * PARAMETERS: Type - Trace event type
+ * Begin - TRUE if before execution
+ * Aml - Executed AML address
+ * Pathname - Object path
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Internal interpreter execution trace.
+ *
+ ******************************************************************************/
+
+void
+AcpiExTracePoint (
+ ACPI_TRACE_EVENT_TYPE Type,
+ BOOLEAN Begin,
+ UINT8 *Aml,
+ char *Pathname)
+{
+
+ ACPI_FUNCTION_NAME (ExTracePoint);
+
+
+ if (Pathname)
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
+ "%s %s [0x%p:%s] execution.\n",
+ AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End",
+ Aml, Pathname));
+ }
+ else
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
+ "%s %s [0x%p] execution.\n",
+ AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End",
+ Aml));
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiExStartTraceMethod
*
* PARAMETERS: MethodNode - Node of the method
@@ -512,17 +604,10 @@ AcpiExStartTraceMethod (
Exit:
if (Enabled)
{
+ ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, TRUE,
+ ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname);
if (Pathname)
{
- ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
- "Begin method [0x%p:%s] execution.\n",
- ObjDesc->Method.AmlStart, Pathname));
- }
- else
- {
- ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
- "Begin method [0x%p] execution.\n",
- ObjDesc->Method.AmlStart));
}
}
if (Pathname)
@@ -578,17 +663,10 @@ AcpiExStopTraceMethod (
if (Enabled)
{
+ ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, FALSE,
+ ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname);
if (Pathname)
{
- ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
- "End method [0x%p:%s] execution.\n",
- ObjDesc->Method.AmlStart, Pathname));
- }
- else
- {
- ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
- "End method [0x%p] execution.\n",
- ObjDesc->Method.AmlStart));
}
}
@@ -649,21 +727,8 @@ AcpiExStartTraceOpcode (
if (AcpiExInterpreterTraceEnabled (NULL))
{
- if (WalkState->OpInfo)
- {
- ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
- "Begin opcode: %s[0x%p] Class=0x%02x, Type=0x%02x, Flags=0x%04x.\n",
- Op->Common.AmlOpName, Op->Common.Aml,
- WalkState->OpInfo->Class,
- WalkState->OpInfo->Type,
- WalkState->OpInfo->Flags));
- }
- else
- {
- ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
- "Begin opcode: %s[0x%p].\n",
- Op->Common.AmlOpName, Op->Common.Aml));
- }
+ ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, TRUE,
+ Op->Common.Aml, Op->Common.AmlOpName);
}
}
@@ -693,8 +758,7 @@ AcpiExStopTraceOpcode (
if (AcpiExInterpreterTraceEnabled (NULL))
{
- ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
- "End opcode: %s[0x%p].\n",
- Op->Common.AmlOpName, Op->Common.Aml));
+ ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, FALSE,
+ Op->Common.Aml, Op->Common.AmlOpName);
}
}