diff options
author | Lv Zheng <lv.zheng@intel.com> | 2014-03-28 10:39:02 +0800 |
---|---|---|
committer | Lv Zheng <lv.zheng@intel.com> | 2015-06-10 16:07:56 +0800 |
commit | e8e4a9b19d0b72a7b165398bdc961fc2f6f502ec (patch) | |
tree | 6ef415ce99205186b3b7445d246566900f17d865 /source/components/executer/exdebug.c | |
parent | 07fffd02607685b655ed92ee15c160e6a810b60b (diff) | |
download | acpica-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.c | 136 |
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); } } |